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

时间:2010-03-06 18:42:00

标签: 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 )。但我记得看到这种格式干净的日志输出,它们比我之前看到的任何东西都要好得多,而且除了简单明了之外,它们也更容易阅读,因为它们重现了代码的一些逻辑组织。 / p>

然而我再也找不到那个图书馆了。

我很确定它与 log4j sl4j 完全兼容。

1 个答案:

答案 0 :(得分:1)

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

  1. 根据最长名称填写类名
  2. 根据“嵌套”修改的消息。
  3. 对于1.我几乎看不出如何做到这一点,因为你永远不会知道将来登录哪个类。当然,您可以根据 记录的最长类名称添加填充,但是一旦记录了更长的类名,该文件就不会像样本一样好看

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

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