过滤日志并实时将输出发送到新文件

Filter log and send the ouput to a new file in real time

我有一个 WebLogic 应用程序的日志文件“Apps.out”,有一个特定的应用程序将这样的日志发送到该文件:

[YYYY/MM/DD HH:MM:SS][INFO][PATTERN -> Information1]
[YYYY/MM/DD HH:MM:SS][INFO][PATTERN -> Information2]
[YYYY/MM/DD HH:MM:SS][INFO][PATTERN -> Information3]
[YYYY/MM/DD HH:MM:SS][INFO][PATTERN -> Information4]
[YYYY/MM/DD HH:MM:SS][INFO][PATTERN -> Information5]

我可以过滤这些信息:grep 'PATTERN' Apps.out 但我想将此信息发送到一个新文件 (app1.log) 并进行此渐进式操作只是为了在 app1.log 上发送与 PATTERN 匹配的新寄存器,是否可以实时进行? 谢谢

您可以使用 tail -f:

nohup bash -c "tail -f Apps.out | grep PATTERN > app1.log" &

这将跟随文件从您开始后退 10 行的那一刻开始增长。

您可以使用 -n 更改它并返回任意行或从文件开头读取。

您可以执行以下操作:<your_log_file> 作为您的日志文件 和 <your_PATTERN> 当你模式

nohup tail -f <your_log_file>.log|while IFS= read -r;do
    case $REPLY in
        (*<your_PATTERN>*)printf "%s\n" "$REPLY">>app1.log;
    esac
done &