shell - 根据时间戳将多个日志文件合并为一个

标签 shell logging

我正在尝试找到一种解决方案来快速合并来自 2 个应用程序服务器的 2 个日志文件。
日志文件是这样的:

00:00:00,028 DEBUG [com.acme.productionservice...

我想要一些基于时间戳打印日志文件的一行或另一行的东西,例如:

如果文件一有两行:
00:00:00,028 DEBUG [com.acme.productionservice...
00:00:00,128 DEBUG [com.acme.productionservice...

和文件二有这 3 行:
00:00:00,045 DEBUG [com.acme.productionservice...
00:00:00,100 DEBUG [com.acme.productionservice...
00:00:00,150 DEBUG [com.acme.productionservice...

输出应该是
00:00:00,028 DEBUG [com.acme.productionservice...   (file 1)
00:00:00,045 DEBUG [com.acme.productionservice...   (file 2)
00:00:00,100 DEBUG [com.acme.productionservice...   (file 2)
00:00:00,128 DEBUG [com.acme.productionservice...   (file 1)
00:00:00,150 DEBUG [com.acme.productionservice...   (file 2)

我目前知道的唯一方法是使用
cat file1 文件 |种类
但这对于 gb 的日志来说非常慢
我需要一些东西,比如阅读 2 个文件并比较时间戳并决定要打印的内容。

最佳答案

我最终使用

sort -m 

我还使用了一个技巧来了解日志来自哪个日志文件
for a in *.log ; do 
    awk  '$0=FILENAME" "$0' $a > $a.log
do
sort -m -k 2 *.log.log 

关于shell - 根据时间戳将多个日志文件合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34397583/

相关文章:

linux - 用于监视新创建目录的 Bash 脚本

linux - 执行 sudo 和 chmod 命令的 bash 脚本无法正常工作

java - Log4j 不记录 INFO 级别

python - Python 中跨记录器的嵌套前缀

Java Logger 向控制台生成多个相同的日志

objective-c - 我如何制作 GIT 凭证助手?

shell - 如何将变量从 Jenkinsfile 传递给 shell 命令

linux - 我应该对同一文件上的并行 sed 执行进行竞争条件检查吗?如果是,那么如何锁定文件

swift - XCGLogger 是否使用 os_log 进行快速记录?

java - 如何在文本文件中写入日志但不覆盖文件