拖尾两个日志文件


14

我有一个Web应用程序,可以输出到许多包含性能信息的日志文件。一个日志文件输出代码执行时间,而另一个输出SQL计时。我无法控制记录器或生成日志文件的代码,但是我想将日志输出到一个地方。

目前我正在做这样的事情

tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time

每次在应用程序中执行SQL时,这都会向控制台输出一些信息。但是我必须在两个单独的SSH会话中运行代码。但是,我希望能够在同一SSH会话中尾随这两个文件。这可能吗?

Answers:


20

是的,tail输出行附加到命令行上给出的所有文件中:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'

好吧,这比我的方法容易!(大声笑,只是提出了一个不是我的答案,出于好奇的缘故,我将放弃我的答案)
杰里米(Jeremy

4

看看MultiTail。是你的朋友

您可以在其中有多个日志尾

 -不同的窗户,是al vim的“分体式”
 -或者将两个(或N个)流合并到一个视图中,然后
 -您可以通过正则表达式过滤蒸汽,如果愿意,
 -它将“输出”到文件中

http://www.vanheusden.com/multitail/

在Ubuntu 10.04上: sudo apt-get install multitail


2

是的,使用screen命令,您可以在一个终端上运行2个bash会话。

  • 跑步screen开始,
  • 然后键入Ctrl-a然后S(注意:大写S)将屏幕拆分为2。
  • Ctrl-a然后Tab将您在两个会话之间移动。
  • Ctrl-a然后c将在该新区域中启动Shell。

(在使用此功能之前,请先参阅Riccardo的答案,他的操作要简单得多,我将其保留下来,因为它可能对有类似但不同问题的人有用)。


0

您可以使用mkfifo将输出多路复用到一个管道

创建一个fifo管道,将n个文件尾部添加到管道,然后对管道进行分类

 mkfifo pipeName
 tail file1 &
 tail file2 &
 ...
 tail fileN &
 cat pipeName

等结束了

 rm pipeName

1
这实际上并没有使用fifo;您可能希望使用tail命令tail fileN >> pipeName
杰里米·克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.