Java:执行良好格式化日志输出的库

Syn*_*r0r 5 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
Run Code Online (Sandbox Code Playgroud)

它会显示如下:

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
Run Code Online (Sandbox Code Playgroud)

这是我刚刚编写的一个例子(VeryLongCamelCaseClassNamesNotMine).但我记得看到这种格式干净的日志输出,它们比我之前看到的任何东西都要好得多,除了更加简单,它们也更容易阅读,因为它们再现了代码的一些逻辑组织.

但我找不到那个图书馆了.

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

Séb*_*ien 1

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

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

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

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

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