web-dev-qa-db-ja.com

slf4jをフォーマットしてメッセージタイプを色でログに記録する

Javaアプリケーションへのログインにslf4jを使用しています。これには、多くのログ記録とログ監視が含まれます。
ログ全体が黒色で印刷されている場合、ログから情報を読み取って見つけるのが非常に難しい場合があります。
読みやすくするために、さまざまな種類のメッセージをさまざまな色でログに記録することは可能ですか?
たとえば、すべてのエラーレベルメッセージが赤色または異なるフォントサイズで表示され、すべての情報レベルメッセージが青色および異なるフォントサイズで表示されます。

どんな提案や助けも大歓迎です。 Thnx。

15
Panshul

2つの解決策が思い浮かびます。それらは色ではありませんが、代替ソリューションです。

  1. File Appender構成では、ログレベル(エラー、警告など)を含むようにパターンを構成できます。次に、ファイルをgrepして、メッセージをレベルでフィルタリングできます。

  2. レベルのしきい値が異なる2つのファイルアペンダー(2つの別々のログファイル用)を構成できます。たとえば、一方はデバッグレベルを超えるすべてのログ(つまり、info、warn、error)をlogs.txtに記録し、もう一方はエラーログのみをerrors.txtに記録します。

それが役に立てば幸い。

3
daniel

あなたが心に留めておかなければならない何か。

まず、SLF4Jは単なるロギングファサードです。実際のログメッセージの処理方法は、使用したバインディングによって異なります。したがって、質問は無効です。代わりに、使用する実装を引用する必要があります(LogBack?Log4J?など)

第二に、「着色」はほとんどの場合意味のあるものではありません。たとえば、プレーンテキストのログファイルを参照している場合、それらはすべてプレーンテキストであるため、色付けを制御できるものはありません(エディターにログメッセージ形式の組み込みの特別な構文強調表示がない限り)。コンソール/ターミナルで色を確認したい場合、または色情報(HTMLなど)を含めることができるファイル形式でログを出力している場合に意味があります。

これらの2つのアイデアを念頭に置いて、ここに私の提案があります。

LogBackには、コンソール出力での色付けのサポートが組み込まれています http://logback.qos.ch/manual/layouts.html#coloring 。コンソール出力で色を確認する方法を探していて、LogBackの使用が許可されている場合は、これが探しているものです。

3
Adrian Shum

フォーマッターがないため、slf4jロギングの色を変更することはできません。 SLF4Jは、アプリケーションと、Log4jやLogbackなどのログ機能との間のミドルウェアです。

説明されているように、Log4j出力で色を変更できます ここMulticolorLayout from jcabi-log を使用することをお勧めします

2
yegor256

次のアペンダーをlogback.xmlに追加して、ログ出力に色を付けます。

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <Pattern>%d %highlight(%-5level) [%thread] %cyan(%logger{15}): %msg%n</Pattern>
        </encoder>
</appender>
1
Jackkobec

ロギングレベルとパッケージの両方にフィルターを使用しています。この例は、Springブートapplication.propertiesからのものです

   logging.level.root=warn
   logging.level.org.springframework=warn
   logging.level.org.hibernate=warn
   logging.level.org.starmonkey.brown=DEBUG

このようにして、見たいメッセージだけが表示されます

0
Pomagranite