Logs

將 multitail 的過濾應用於通過萬用字元傳遞的許多文件

  • November 29, 2019

multitail有一個很好的基於正則表達式的過濾機制,在手冊頁和線上手冊中有描述。兩個來源都聲明可以使用-ev開關從輸出中排除與給定正則表達式匹配的日誌行:

multitail -ev "ignorelinescontainingthis" /var/log/whatever.log -ev "alsoignorethis" /var/log/another.log

但是,這似乎不適用於過濾使用萬用字元傳遞的許多日誌文件:

multitail -ev "thisdoesntwork" /var/log/myservice*.log

有沒有辦法讓它工作?

出於分析目的,我嘗試了-ec開關(突出顯示正則表達式匹配),結果發現過濾器僅應用於萬用字元列表中的第一個文件,但沒有應用於其他文件。

將我的評論變成答案。

的手冊頁multitail定義-e選項如下:

-e對以下文件 使用下一個正則表達式。

所以正則表達式過濾器只適用於緊隨其後的文件。使用 shell glob 時,這將導致過濾器僅應用於擴展文件列表中的第一個文件。

要在所有文件中應用正則表達式過濾器,-E必須改用該選項:

-E對以下文件 使用下一個正則表達式。

-v選項否定指定的正則表達式,對於這些選項中的任何一個都應該以相同的方式工作。

引用自:https://unix.stackexchange.com/questions/554627