按日期合并多个日志文件,包括多行

2024-06-19

我有几个包含所有以时间戳开头的行的日志,因此以下内容可以按预期合并它们:

cat myLog1.txt myLog2.txt | sort -n > combined.txt

问题是,myLog2.txt 还可以包含没有时间戳的行(例如 java 堆栈跟踪)。有没有一种简单的方法,无需任何自定义脚本即可合并它们并保留多行内容?

Example myLog1.txt

11:48:18.825 [main] INFO  org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
11:48:55.784 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema

Example myLog2.txt

11:48:35.377 [qtp1484319352-19] ERROR c.w.b.c.ControllerErrorHandler -
org.springframework.beans.TypeMismatchException: Failed to convert value of type   'java.lang.String' to required type 'org.joda.time.LocalDate'; nested exception is    org.springframework.core.convert.ConversionFailedException: Failed to convert from type     java.lang.String to type @org.springframework.web.bind.annotation.RequestParam   @org.springframework.format.annotation.DateTimeFormat org.joda.time.LocalDate for value    '[2013-03-26]'; nested exception is java.lang.IllegalArgumentException: Invalid format: "    [2013-03-26]"
    at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:68) ~[spring-beans-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:45) ~[spring-beans-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:595) ~[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:98) ~[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77) ~[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) ~[spring-web-3.2.1.RELEAS

预期产出

11:48:18.825 [main] INFO  org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
11:48:35.377 [qtp1484319352-19] ERROR c.w.b.c.ControllerErrorHandler -
org.springframework.beans.TypeMismatchException: Failed to convert value of type   'java.lang.String' to required type 'org.joda.time.LocalDate'; nested exception is    org.springframework.core.convert.ConversionFailedException: Failed to convert from type     java.lang.String to type @org.springframework.web.bind.annotation.RequestParam   @org.springframework.format.annotation.DateTimeFormat org.joda.time.LocalDate for value    '[2013-03-26]'; nested exception is java.lang.IllegalArgumentException: Invalid format: "    [2013-03-26]"
    at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:68) ~[spring-beans-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:45) ~[spring-beans-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:595) ~[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:98) ~[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77) ~[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) ~[spring-web-3.2.1.RELEAS
11:48:55.784 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema

谢谢 马可


我一直在为同样的问题而苦苦挣扎,最后我想我已经解决了。尝试这样做:

sort -nbms -k1.1,1.2 -k1.4,1.5 -k1.7,1.8 -k1.10,1.12 myLog1.txt myLog2.txt > combined.txt

我自己仍然不太清楚,但我会尝试给出一些解释。根据手册页,使用的开关意味着:

-n, --numeric-sort - 根据字符串数值进行比较。

-b, --ignore-leading-blanks - 忽略前导空白。

-s, --stable - 通过禁用最后手段比较来稳定排序

-m, --merge - 合并已经排序的文件;不排序

-k, --key=POS1[POS2] - 在 POS1(原点 1)处开始密钥,在 POS2 处结束(默认行尾)

  • 日志文件已经排序,因此我们不需要再次对它们进行排序,只需确定合并时哪一行去哪里。这就是为什么-m。防止堆栈跟踪混乱至关重要。
  • -b在这种情况下没有必要,因为不知何故-n and -m组合可以防止堆栈跟踪行聚集。我留下它是为了以防万一,因为大多数堆栈跟踪行都以空格开头。
  • -n每当密钥中存在非数字字符时,显然就会停止比较密钥。这是保持堆栈跟踪到位的第二个关键点。重要的是如果是的话-n -k1,1它只会按小时对日志文件进行排序,因为冒号不是数字。除此之外-n加速数字比较,所以无论如何我们都想要它。
  • 上一点提到的问题是通过指向每个键中的特定字符位置来解决的,这就是为什么-k1.1,1.2(小时的第一个和第二个数字)-k1.4,1.5(分钟的第一个和第二个数字)等等。点之前的第一个数字始终为“1”,因为它指向文件行的第一列(在我们的例子中是时间)。不久之后就是-kA,B where A and B是给定行中的列位置(默认情况下,行由空格分隔)。 A 和 B 使用的格式是 .. 请记住,只要 A 和 B 之间有非数字字符A and B如果比较的话,它后面的所有内容都会被忽略-n used.
  • -s禁用默认行为,即:只要进行比较的键是相同的完整字符串,就会完成行的比较。我们不希望保留原始日志条目的顺序。不确定是否有必要-m though.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按日期合并多个日志文件,包括多行 的相关文章

  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • 对 Java 中的对象数组进行排序

    我正在开发一个报告模块 显示花费的时间和任务数量 这些值在 Java Bean 中设置 bean 对象存储在数组中 我使用单独的查询来获取时间和任务数量 现在我必须根据时间和任务数量对数组进行排序 下面的代码仅比较字符串 if list i
  • mysql 版本号排序

    我有这样的价值观 1 1 2 9 1 2 2 4 1 2 3 4 3 2 14 3 2 1 4 2 我需要使用 mysql 对这些值进行排序 该数据类型是 varbinary 300 所需的输出将类似于 1 1 2 1 2 3 4 2 2
  • Rails 中过滤长日志参数

    我允许用户在我的网站上上传文件 其中一些文件可能非常大 并且占用了我的日志文件的很大一部分 所以我不想让它出现 我知道 config filter parameters password 过滤某些参数 但问题是参数位于这样的哈希中 pers
  • 在 Rails 中使用 gem 时,“无法删除 Object::ClassMethods”源于什么?

    我在安装 gems 时经常遇到这样的问题 有谁知道这源于什么 我见过几个不同的案例 但仍然不知道到底是什么原因造成的 sudo rake gems install trace in u app releases 20100213003957
  • 在 PHP 中使用自定义键对数组进行排序

    我有一个如下所示的结构数组 array1 array 123 gt array 1 gt 1 2 gt 3 345 gt array 1 gt 3 2 gt 5 789 gt array 1 gt 1 2 gt 5 567 gt array
  • Python:按数字对列表进行排序

    我有一个清单x y我需要根据坐标进行排序x坐标 则y协调时x是相同的并消除相同坐标的重复项 例如 如果列表是 450 0 486 6 500 0 400 0 450 0 313 3 350 0 313 3 300 0 400 0 349 9
  • Python:如何在 python 使用日志记录模块中创建和使用自定义记录器?

    我正在尝试创建一个自定义记录器 如下面的代码所示 但是 无论我传递给该函数哪个级别 记录器都只会打印警告消息 例如 即使我设置了参数级别 日志记录 DEBUG默认情况下 我的代码无法记录调试或信息消息 有人可以指出这里的问题吗 import
  • 按顺时针顺序对四个点排序

    数组中的四个 2D 点 我需要按顺时针顺序对它们进行排序 我认为只需一次交换操作就可以完成 但我还没有能够正式放下这一点 编辑 在我的例子中 这四个点是凸多边形 编辑 这四个点是凸多边形的顶点 它们不必按顺序排列 如果你想从更数学的角度来看
  • 高效查找最近的字典键

    我有一堆日期和货币价值对SortedDictionary
  • Pandas:根据除一行之外的其他多级列对最里面的列进行分组排序

    这是我的扩展previous question https stackoverflow com questions 65021214 pandas sort innermost column group wise based on othe
  • SAS 显示管理器命令

    SAS 显示管理器是 SAS 系统的命令行界面 它作为遗留设施保留在 Base SAS 中 然而 关于如何使用此功能的在线文档充其量也很少 而且谷歌搜索也没有什么成果 常见的 DM 命令是 CLEAR LOG 清晰的输出 WPGM 我的问题
  • 如何显示带有排序下拉列表的页面?

    我有一个选择列表
  • 我应该如何从非 root Debian Linux 守护进程登录?

    我正在编写一个新的守护进程 它将托管在 Debian Linux 上 我发现 var log 具有仅 root 写入权限 因此我的守护进程无法在那里写入日志文件 但是 如果它写入那里 它似乎将获得自动日志轮转 并且也按照用户期望的方式工作
  • 无需 DI 即可登录 .NET Core?

    看来微软真的想用 NET Core 将 DI 强行塞到你的喉咙里 我不确定为什么 但坦率地说 我的控制台应用程序又小又简单 我只是不想仅仅为了构建一个完整的 DI 容器 做一些简单的日志记录 如何在不使用 DI 的情况下登录 NET Cor
  • 如何像格式化数组一样使用 monolog 记录多行条目?

    我正在尝试记录一个数组monolog in symfony logger this gt get logger logger gt info print R user true 我得到的输出未格式化为 print r 预期的格式 它将所有内
  • PHP exec() 返回值是什么?

    我正在尝试使用 PHP exec 函数 如果 return var 参数与输出参数一起存在 那么执行命令的返回状态将被写入此 多变的 如果执行成功 则为 0 但是 如果出现错误 则可能是多个其他整数 我似乎无法在任何地方找到这些整数对应的内
  • 单元测试期间的 Python 日志捕获

    我正在尝试捕获在 python 单元测试过程中创建的日志 并在此处看到了代码 https stackoverflow com a 1049375 576333 https stackoverflow com a 1049375 576333
  • 如何按键按字母顺序对 Ruby 哈希进行排序

    我正在尝试按键按字母顺序对哈希进行排序 但如果不创建自己的排序类 我似乎无法找到一种方法来做到这一点 我发现下面的代码可以按值排序 如果它是整数 我正在尝试修改它 但没有任何运气 temp ninjas 36 temp pirates 12
  • 为什么使用 Angular 的 $log 而不是 console.log?

    我知道这是使用角度的最佳实践 log代替console log 但是 我找不到解释原因的良好文档 开发人员为什么要使用 log log首先检查浏览器是否支持console log 例如 IE 8 就没有 这可以防止在 IE 8 上显示错误

随机推荐

  • 使用 jQuery / .data() 避免内存泄漏

    我正在使用 jQuery 动态创建 HTML 元素 现在需要针对它们存储 JavaScript 数据 但是 我现在担心内存泄漏 因为我实际上从未在对象上调用 删除 我 append 和 detach 它们 但从不 remove jQuery
  • jQuery,获取一个元素的宽度并应用于另一个元素

    有没有一种方法可以获取一个元素的宽度 container例如并将其应用到另一个 item例如 我的布局是响应式的 因此为什么我不能直接给出 item固定宽度值 像这样 item width container width Demo gt h
  • 对浮点数求和的最佳 OpenCL 2 内核是什么?

    C 17引入了许多新算法来支持并行执行 特别是标准 减少 http en cppreference com w cpp algorithm reduce是一个并行版本std 累积 http en cppreference com w cpp
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • 使用AT命令发送消息时CMS Error 500错误

    我正在尝试在超级终端使用 AT 命令发送短信 我使用的是华为E1552 我收到此错误 CMS ERROR 500 我需要帮助找出导致此错误的原因 谢谢 这是一个旧线程 但为了将来的参考 我想这会很有用 CMS 错误 500基本上是指未知错误
  • 如何将 数组传递给存储过程

    我有一个清单索赔数据在 C 中 它有三个项目 日期 类型和描述 其中可以有多行 如下所示 索赔数据 Date Type Description 01 02 2012 Medical Its a medical 05 02 2013 Thef
  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • 在 TestNG 中运行多个类

    我正在尝试自动化一个场景 其中我想登录一次应用程序 然后进行操作而无需再次重新登录 考虑一下 我有在特定类的 BeforeSuite 方法中登录应用程序的代码 public class TestNGClass1 public static
  • 不允许对IsolatedStorageFile Stream 进行操作

    创建文件后打开该文件时出现错误 using var myFileStore IsolatedStorageFile GetUserStoreForApplication myFileStore CreateFile DateTime Now
  • InvalidOperationException:无法解析类型“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务

    我开始将我的 asp net core RC1 项目转换为 RC2 并面临现在的问题IHttpContextAccessor没有解决 为了简单起见 我使用 Visual Studio 模板创建了新的 ASP NET RC2 项目ASP NE
  • 无法填充名为“status”的数组

    我正在尝试做一些非常简单的事情 在 Javascript 中初始化一个数组 而且它在 Google Chrome 中不起作用 这是代码 status for i 0 i lt 8 i status i false alert status
  • 由于键更改而尝试插入时外键约束失败

    我有一个 Content 对象 它引用多对多关系中的一组 Tag 对象 作为持久化新内容对象的一部分 我在 PostgreSQL 中查看标签是否已存在 如果存在 则将对其的引用添加到内容对象并尝试保存内容对象 我遇到的问题是 当我这样做时
  • 按空值和非空值分组

    我有一个包含用户 facebook ID 的表 我必须报告谁在使用 facebook 或不使用 对于 facebook 用户 数据行包含一个数字 否则包含 null 我的结果必须是这样的 NbUsers Facebook 1000 no 5
  • benchmem 的输出

    使用内存分析器运行基准测试时 我看到以下输出 SomeFunc 100 17768876 ns op 111 B op 0 allocs op 我不明白输出 0 allocs op 但分配了 111 B 知道这意味着什么吗 我的函数是否在堆
  • Webpack 缺少 CommonsChunk 和 extract-text-webpack-plugin 模块

    我正在跟进Maxime Fabre 的 Webpack 教程 https blog madewithlove be post webpack your bags 我正在尝试获得一个非常简单的 webpack 包 其中包含 1 个入口点和 2
  • SSIS 包卡在“已创建执行”状态

    我最近对我的一个 SSIS 项目部署了更新 自从该项目失败后 它就按计划运行了 SSIS 包似乎停留在 已创建执行 状态 报告中没有任何消息来解释这个问题 我尝试重新部署该项目 但结果保持不变 我最终不得不恢复到早期版本的部署以使系统重新上
  • jQuery UI sortable 和 contenteditable=true 不能一起工作

    我正在创建一个列表并希望使其项目可排序和可编辑 所以我这样做 ul li span A span li li span B span li li span C span li ul ul list sortable http jsfiddl
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • Microsoft Teams 中私人消息的传入 Webhook

    我可以从 C 应用程序或 PS 脚本创建传入 Webhook 将 JSON 消息发送到 MSFT 文档所解释的通道 但是 我想使用传入的 webhook 将 JSON 消息从我的应用程序发送到用户 作为私人消息 就像 Slack 允许的那样
  • 按日期合并多个日志文件,包括多行

    我有几个包含所有以时间戳开头的行的日志 因此以下内容可以按预期合并它们 cat myLog1 txt myLog2 txt sort n gt combined txt 问题是 myLog2 txt 还可以包含没有时间戳的行 例如 java