Java:可以很好地格式化日志输出的库

标签 java logging log4j slf4j

我找不到允许以比通常看到的更好的方式格式化日志输出语句的库。我记得的一个功能是它可以根据日志语句发生位置的“嵌套”来“偏移”日志消息。

也就是说,不是这样的:

DEBUG | DefaultBeanDefinitionDocumentReader.java| 86 | Loading bean definitions
DEBUG | AbstractAutowireCapableBeanFactory.java| 411 | Finished creating instance of bean 'MS-SQL'
DEBUG | DefaultSingletonBeanRegistry.java| 213 | Creating shared instance of singleton bean 'MySQL'
DEBUG | AutowireCapableBeanFactory.java| 383 | Creating instance of bean 'MySQL'
DEBUG | AutowireCapableBeanFactory.java| 459 | Eagerly caching bean 'MySQL' to allow for resolving potential circular references
DEBUG | AutowireCapableBeanFactory.java| 789 | Another debug message

它会显示这样的东西:

DEBUG | DefaultBeanDefinitionDocumentReader.java| 86  | Loading bean definitions
DEBUG | AbstractAutowireCapableBeanFactory.java | 411 | Finished creating instance of bean 'MS-SQL'
DEBUG | DefaultSingletonBeanRegistry.java       | 213 | Creating shared instance of singleton bean 'MySQL'
DEBUG | AutowireCapableBeanFactory.java         | 383 | Creating instance of bean 'MySQL'
DEBUG | AutowireCapableBeanFactory.java         | 459 | |__ Eagerly caching bean 'MySQL' to allow for resolving potential circular references
DEBUG | AutowireCapableBeanFactory.java         | 789 |     |__ Another debug message

这是我刚刚编造的示例 (VeryLongCamelCaseClassNamesNotMine)。但我记得看到过格式清晰的日志输出,它们真的比我以前见过的任何东西都好得多,而且除了更好之外,它们也更容易阅读,因为它们再现了代码的一些逻辑组织。

但我再也找不到那个图书馆是什么了。

我很确定它与 log4jsl4j 完全兼容。

最佳答案

我在您的代码示例中看到两件事:

  1. 根据最长的名称填充类名
  2. 根据“嵌套”修改消息。

对于 1. 我几乎看不出这是如何做到的,因为你永远不知道将来 登录哪个类。当然,您可以根据 曾经 记录的最长类名添加填充,但是一旦记录了更长的类名,文件看起来就不会像您的样本那么好.

对于 2。可以实现一个过滤器(请参阅 here 以了解有关过滤器的 logback 文档),该过滤器将研究调用者数据并添加某种“嵌套在”前缀,就像您在示例中所写的那样。我想这不会是一项太难的任务。

希望这会有所帮助...虽然我没有为您提供指向您正在寻找的库的链接...:-(

关于Java:可以很好地格式化日志输出的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2393675/

相关文章:

java - 在 Netbeans GUI 中覆盖 paintComponent

C++高效大文件解析器

java - 在 java.util.logging 中为一个类指定具有多个处理程序的多个记录器

amazon-web-services - 降低 AWS EC2 的日志轮换频率

java - 在 Tomcat 中作为 WAR 运行的 Grails 项目中 Maven-build JAR 的 SLF4J 配置位置

java - 停止从依赖项向控制台显示记录器输出

java - OpenCV 的 Java 绑定(bind) Mat.get() 给出了奇怪的结果

java - Scala - AbstractSeq 如何减少字节码大小

java - eclipse 向导 : how to add a checkboxlist?

python - 如何设置扭曲的日志记录级别?