最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)日志文件關(guān)鍵詞搜索方式

 更新時(shí)間:2025年09月19日 10:37:46   作者:敲代碼的豬豬俠  
Java代碼用于搜索指定目錄下的日志文件,按時(shí)間排序并輸出包含關(guān)鍵詞的內(nèi)容,處理大數(shù)據(jù)量時(shí),控制臺(tái)輸出不完整,需調(diào)整IDE console設(shè)置以擴(kuò)展緩沖區(qū)

Java日志文件關(guān)鍵詞搜索

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class TryTraverseDemo03 {

    public static void main(String[] args) {

        // 設(shè)置要搜索的關(guān)鍵詞
        String keyword = "TID:5bc8f75f1ad5450dab3127896bed429b.65.16849102400674853";

        // 日志文件路徑
        String logFilePath = "D:\\log\\home\\xiahui-wms-rfbiz-application\\xiahui-wms-rfbiz-2023-05-24.2.log";

        File logFile = new File(logFilePath);

        try (BufferedReader br = new BufferedReader(new FileReader(logFile))) {
            String line;
            int lineNum = 1;
            while ((line = br.readLine()) != null) {
                if (line.contains(keyword)) { // 如果這一行包含關(guān)鍵詞
                    System.out.printf("[%d]: %s%n", lineNum, line); // 輸出這一行
                }
                lineNum++;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

這段Java代碼實(shí)現(xiàn)了讀取指定路徑下的日志文件,并在日志文件中搜索指定的關(guān)鍵詞。

具體實(shí)現(xiàn)過程如下:

  • 1.指定要搜索的關(guān)鍵詞和日志文件路徑;
  • 2.創(chuàng)建File對象,表示要讀取的日志文件;
  • 3.創(chuàng)建BufferedReader對象,指定字符流讀取日志文件內(nèi)容;
  • 4.讀取每一行的內(nèi)容,如果該行包含關(guān)鍵詞,則將該行內(nèi)容輸出到控制臺(tái);
  • 5.繼續(xù)讀取下一行,直到讀取到文件末尾;
  • 6.關(guān)閉BufferedReader對象,釋放資源。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class LogSearcher {

    public static void main(String[] args) throws ParseException {
        String directoryPath = "D:\\log\\home\\xiahui-wms-rfbiz-application";
        File directory = new File(directoryPath);

        // 獲取目錄下所有的log文件路徑
        List<String> logFilePaths = new ArrayList<>();
        for (File file : directory.listFiles()) {
            if (file.isFile() && file.getName().endsWith(".log")) {
                logFilePaths.add(file.getAbsolutePath());
            }
        }

        // 循環(huán)遍歷每個(gè)日志文件進(jìn)行查找
        List<String> targetLogs = new ArrayList<>();
        for (String logFilePath : logFilePaths) {
            try (BufferedReader reader = new BufferedReader(new FileReader(logFilePath))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    if (line.contains("5bc8f75f1ad5450dab3127896bed429b.65.16849103054344859")) {
                        targetLogs.add(line);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 對結(jié)果按時(shí)間排序
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Collections.sort(targetLogs, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                try {
                    Date d1 = dateFormat.parse(o1.substring(0, 19)); // 將字符串截取到時(shí)間部分,按格式解析成Date類型
                    Date d2 = dateFormat.parse(o2.substring(0, 19));
                    return d1.compareTo(d2); // 用Date類型比較時(shí)間
                } catch (ParseException e) {
                    e.printStackTrace();
                    return 0;
                }
            }
        });

        // 顯示查找的結(jié)果
        System.out.println("Found " + targetLogs.size() + " logs:");
        for (String log : targetLogs) {
            System.out.println(log);
        }
    }
}

這段Java代碼實(shí)現(xiàn)了在指定目錄下查找所有以“.log”結(jié)尾的日志文件,并從這些日志文件中查找包含指定關(guān)鍵詞的日志,根據(jù)時(shí)間進(jìn)行排序輸出結(jié)果。

具體實(shí)現(xiàn)過程如下:

  • 1. 指定目錄路徑;
  • 2. 創(chuàng)建File對象,表示要查找的目錄;
  • 3. 獲取目錄下所有以“.log”為后綴的文件路徑;
  • 4. 遍歷每個(gè)日志文件,打開文件,按行讀取內(nèi)容,查找包含指定關(guān)鍵詞的日志,并將其保存到targetLogs集合中;
  • 5. 關(guān)閉文件讀取流,釋放資源。
  • 6. 對找到的日志集合按時(shí)間進(jìn)行排序,時(shí)間格式采用“yyyy-MM-dd HH:mm:ss”;
  • 7. 輸出找到日志的總數(shù)以及展示日志詳情。

另外在使用該工具類的時(shí)候遇到一個(gè)問題,當(dāng)根據(jù)某個(gè)關(guān)鍵字進(jìn)行查詢所對應(yīng)的日志,當(dāng)日志數(shù)據(jù)量大的時(shí)候,查詢到的日志在控制臺(tái)輸出不完整的問題

解決方案

通過Console配置修改來修改,點(diǎn)擊 File ->Settings ->editor - >General->Console 選中如下圖:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

大丰市| 镇巴县| 扶风县| 浑源县| 梁河县| 山东省| 武威市| 太原市| 牙克石市| 宣武区| 江阴市| 上犹县| 扶风县| 镇安县| 阿克| 鸡东县| 襄汾县| 阳新县| 民乐县| 仪陇县| 竹溪县| 抚松县| 兴和县| 大田县| 婺源县| 台州市| 黑河市| 鹿邑县| 德清县| 望江县| 宣汉县| 民县| 扎鲁特旗| 韶山市| 永年县| 巫山县| 克拉玛依市| 浮梁县| 温泉县| 黑河市| 黄山市|