在單個日誌中編譯所有顯示錯誤消息的 .log
我在 /var/opt/log_loc1、/var/opt/log_loc2、/var/opt/log_loc3 中有許多來自不同 cron 作業的生成日誌。除了查看每個日誌之外,有沒有辦法安排一個 cron 作業來填充新的日誌文件,其中包含所有包含錯誤消息的日誌?
基本上我想用“all_logs_%Y_%m_%d”作為名稱的新日誌文件填充所有日誌名稱和錯誤。每天,我都會有一個新的 all_logs_%Y_%m_%d
範例:這是我在 /var/opt/log_loc1 中的日誌文件列表
- InsertSales_2019_08_19.log
- PurgeHistory_2019_08_19.log
- 導入11_2019_08_19.log
- ImportSales_2019_08_19.log
- Import22_2019_08_20.log
- 導入33_2019_08_20.log
- InsertSales_2019_08_20.log
- PurgeHistory_2019_08_20.log
- 導入11_2019_08_20.log
- ImportSales_2019_08_20.log
- Import22_2019_08_21.log
- 導入33_2019_08_21.log
- InsertSales_2019_08_21.log
- PurgeHistory_2019_08_21.log
*抱歉,如果我的問題不完整
怎麼樣
find
?,我能想到的最簡單的方法是使用它,也許它有點粗糙但它必須完成這項工作
find /var/opt/ -type f -name "*.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} >> total.log \;
我不清楚您是只想過濾所有日誌文件(從所有日子開始)還是從今天開始,如果您需要使用日期過濾,您可以使用
-mtime
選項 fromfind
或者只是使用-name
選項來過濾,例如,昨天的日誌
find /var/opt/ -type f -name "*_
date –date yesterday ‘+%Y_%m_%d’.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} >> total.log \;
不確定這是否可以幫助您…其他不清楚的是,日誌文件具有什麼樣的語法?因為
find
找不到字母或數字順序,所以你會得到一個混亂的文件。通常(並且必須是教條),日誌以 %Y%m%d_%H:%M 或類似的東西開頭,如果是這種情況,您可以像這樣的方式sort
輸出find
find /var/opt/ -type f -name "*.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} \; sort -no total.log
我嘗試了這個
/var/log
,看起來它可以完成這項工作,但正如我所說,這是一種粗糙的方式。希望這可以幫到你。
你有更多關於我使用的選項的資訊
find
,sort
以及grep
在man
頁面中。