5

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

也就是说,而不是这样:

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完全兼容。

4

1 回答 1

1

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

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

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

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

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

于 2010-03-08T09:31:02.097 回答