5

通常見られるものよりもはるかに優れた方法でログ出力ステートメントをフォーマットできるライブラリを見つけることができません。私が覚えている機能の 1 つは、ログ ステートメントが発生した場所の「ネスト」に応じて、ログ メッセージを「オフセット」できることです。

つまり、これの代わりに:

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 )。しかし、このようにきれいにフォーマットされたログ出力を見たのを覚えています。以前見たものよりもはるかに優れていました。単純に優れているだけでなく、コードの論理的な構成の一部を再現しているため、読みやすくもなりました。

それでも、その図書館が何であったかはもうわかりません。

log4jまたはsl4jと完全に互換性があると確信しています。

4

1 に答える 1

1

コード サンプルには次の 2 つがあります。

  1. 最長の名前によるクラス名のパディング
  2. 「ネスティング」に応じて変更されたメッセージ。

1. 将来どのクラスがログに記録されるかわからないため、これがどのように行われるかはほとんどわかりません。確かに、これまでログに記録された最長のクラス名に従ってパディングを追加できますがより長いクラス名がログに記録されると、ファイルはサンプルほど見栄えがよくなくなります。

2.呼び出し元のデータを調査し、例で書いたように、ある種の「ネストされている」プレフィックスを追加するフィルターを実装できます (フィルターに関するログバック ドキュメントについては、こちらを参照してください)。これはそれほど難しい作業ではないと思います。

これがお役に立てば幸いです...お探しのライブラリへのリンクは提供しませんが... :-(

于 2010-03-08T09:31:02.097 に答える