工欲善其事必先利其器

在投奔怒海——一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题。服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息常常被例常日志淹没,在众多Logger滔滔不绝的输出下,要找出错误所在有时都挺费眼。日志的作用无可置疑,大型项目中日志海量产生也不少见。在以前的Domino开发中,Domino服务器在产生日志方面相当节制,程序员对日志的依赖程度也不高。转换到Java开发,我用一直最喜爱的文本编辑器EditPlus肉搏了一段时间(如果用Windows自带的记事本,打开动辄十几甚至几十兆的日志都有些困难),越来越迫切感觉到需要更专业的武器。Java Log Viewer(日志查看器)是我想像中的这款工具的名称,具备的功能包括:

1.       可以手动重载日志。这样既可以防止自动跟踪日志影响当前关注的内容,又可以在需要时方便地载入最新的日志。

2.       对不同级别的日志项着色标注。

3.       可依据级别过滤日志。

4.       方便搜索。

上网一搜索便发现这是很多人想要的,并且与很多工具一样,问题已经不是缺乏,而是在众多候选者里选择。

OtrosLogViewer

根据Java Log Viewer这三个关键词的搜索结果和StackOverflow上的对应问题讨论,经过一番试用和比较【注1】,我确定OtrosLogViewer(http://code.google.com/p/otroslogviewer/)就是我所要的。

除了我原先设想的功能,OtrosLogViewer还提供了以下便利:

5.       以列表的形式分栏显示日志项,底部显示当前选中行的详细内容,并且表格的列可裁剪。

6.       可以依据时间、级别、Logger名称、线程等条件过滤日志。

7.       可迅速定位到上一条或下一条某个级别的日志。

8.       可标记日志,还能根据许多实用的条件自动标记。

9.       预设对多种格式日志的支持,并且有一个编辑器方便自定义需解析的Log4j日志模式(pattern)。

不仅如此,软件的界面美观,操作友好。

演示

下面就以我所打交道的JBoss AS 7.1产生的日志来例示OtrosLogViewer的用法。

启动后界面

除了菜单栏的基本命令,OtrosLogViewer的功能都由按钮或快捷菜单提供,操作上符合直觉,用户需要的功能都以便捷的方式出现在合适的地方。它没有一般软件的设置界面,各种设置都结合在操作的视图里。

OtrosLogViewer有两组基本功能,Open XXX Log和Tail XXX Log,前者是用于打开一个静止的日志文件,后者则可自动刷新(即tail跟踪的含义)一个live的日志文件。软件支持包括Log4j普通文本和XML等多种格式的解析,并且有相应的菜单命令。如果不确定日志采用的格式,OtrosLogViewer也能在打开日志时自动检测。预设的Log4j日志模式为

%d{yyyy-MM-ddHH:mm:ss,SSS} %-5p [%t] %m%n

我所用的JBoss AS 7.1(从JBoss配置文件standalone.xml或者Web管理界面均可看到默认的日志处理器的模式为

%d{HH:mm:ss,SSS}%-5p [%c] (%t) %s%E%n

为了解析这样的日志,可以调用菜单里的Tools -> Show Log4j pattern parser editor。

将其中的相关初始配置改为

pattern=TIMESTAMP LEVEL [CLASS] (THREAD)  MESSAGE

dateFormat=HH:mm:ss,SSS

在同一个界面里可以看到载入的日志文件,修改模式后可以随时测试解析结果。成功后将模式保存为新的pattern文件。软件的两组Open和Tail菜单里都会自动添加采用这个新模式的命令。

打开一个日志文件,所有的日志条目已经列表显示,时间列自动只显示日期的时间部分。不同级别的日志很醒目地用不同颜色的图标区分。选中行日志的详细信息在下面的视图显示,包括错误堆栈和SOAP Message都有格式化和着色显示。用上十分钟,你就会发现仅仅这些阅读日志的效率大大提高。工具栏左边有搜索框,右边有按钮可以定位到上一条或下一条各种级别的日志。每一条日志都可以做标记(Mark)或者加注释(Note),主视图左边的工具视图可以设置和显示过滤和常用的自动标记功能。特别要说明的是列表视图上方的两个图标,第一个可切换是否自动读取新日志,第二个图标则控制在自动刷新的状态下列表中的当前行是否跟随读取的最新行。这两项功能结合起来,在读取live日志时十分方便。

最后再展示一下选中日志后快捷菜单里的丰富选项,过滤和删除都很实用,能够快速排除无关的日志。

注1:Apache的Chainsaw已经多年未更新,bug不少,性能不佳。

一个直接以Java Log Viewer命名的项目过于简单,且只适用于java.util.logging生成的日志。

StackOverflow一个被人推荐的LogExpert在目前的1.5版本上有一个明显且重大的bug,无论是否设置跟踪,软件都会自动跳到最新的日志行。

Java Log Viewer日志查看器相关推荐

  1. SharePoint ULS Log Viewer 日志查看器

    SharePoint ULS Log Viewer 日志查看器 项目描述 这是一个Windows应用程序,更加轻松方便查看SharePoint ULS日志文件.支持筛选和简单的视图. 信息 这是一个W ...

  2. Android 日志自动分析,Android Log Viewer:一个日志查看器工具,可简化实时对Android日志的分析...

    作为与Cordova一起工作的移动应用程序开发人员, 我知道调试应用程序的本机部分会很困难, 例如, 当你为应用程序创建本机插件时(在这种情况下, Android Studio无效).在试图找出我的应 ...

  3. Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器

    一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件. 它拥有一个强大 ...

  4. viewer图片查看器JQ版

    viewer图片查看器JQ版 样例 html <!DOCTYPE html> <html lang="zh-Hans"><head><me ...

  5. 微软云服务器路由跟踪,使用路由日志查看器

    使用路由日志查看器 05/13/2016 本文内容 适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3 上一次修改主题: 2012-07-2 ...

  6. windows照片查看器没了_Secondary Display Photo Viewer(图片查看器)下载

    Secondary Display Photo Viewer(图片查看器)是一款非常棒的图片查看类软件哦,这款软件能够帮助用户们进行幻灯片的查看使用等,1大量的编辑功能也让用户们喜爱哦~ Second ...

  7. 日志查看器:显示日志记录信息的快速WPF控件

    对于长时间运行的后台任务,用户了解当前执行的步骤很有帮助.LogViewer可以安全地多线程收集此信息,并将其显示为可滚动文本.LogViewer允许后台线程在不使用任何WPF代码的情况下写入格式化文 ...

  8. Ubuntu下的log日志查看器

    1.lnav:Linux 下一个基于控制台的高级日志文件查看器 https://www.cnblogs.com/michealLang/p/9761886.html http://www.imooc. ...

  9. 【J2SE】java实现简单照片查看器

    程序执行结果: project结构图: 程序代码: import java.awt.BorderLayout; import java.awt.FileDialog; import java.awt. ...

最新文章

  1. 导致美国大范围网络瘫痪的Mirai僵尸网络
  2. MultiByteToWideChar和WideCharToMultiByte用法详解
  3. 使用coding进行项目代码管理(全程可视化操作!)
  4. matlab动画_弹簧振子振动的matlab动画演示
  5. 腾讯游戏安全报告:定制外挂占比过半 游戏黑产资产惊人
  6. java string split的使用
  7. 《设计模式沉思录》—第2章2.4节访问权限
  8. 视频教程-SQL语句视频课程(进阶版)-Oracle
  9. 03单点登录CAS5.3.4集成客户端
  10. 家庭电信网弄外网唤醒并远程内网电脑
  11. spss分析qpcr数据_SPSS统计分析案例:Kappa一致性系数
  12. macbook边缘磕碰如何修复
  13. 基于STM32的人体红外测温
  14. kotlin-android-extensions过时了,迁移到ViewBinding
  15. CentOS 7教程(二)-网络设置
  16. 【CSS】css 给盒子添加四周阴影
  17. Qt error: ‘class Ui::XXXXX‘ has no member named ‘XXXXX‘
  18. 【测试面试】测试面试题集锦(二)
  19. python basename()函数和dirname()函数
  20. PXC高可用集群总结

热门文章

  1. 中国开源软件推进联盟主席陆首群:开源创新,数字化转型与智能化重构
  2. VMware、linux虚拟机设置网络实现虚拟机与主机网络互通
  3. steam搬砖项目,小白也能月入过万的副业项目
  4. 支付中心-重复支付问题解决方案
  5. 推动商业运营 IDC云计算路演至上海金桥
  6. Mac 技术篇-快速打开Terminal终端的命令方法
  7. 链接服务器共享文件夹,服务器共享文件夹如何发送链接
  8. 2023年成人中专(电大中专)在哪报名?流程一览表! 启程别
  9. Flutter实战-自定义键盘(一)
  10. 哪款蓝牙耳机佩戴比较舒适?佩戴舒适的蓝牙耳机推荐