2017-09-23 2 views
1

log4j2の手動コード設定でappenderにレベルを追加する方法は?

hereからあなたはこれを達成するために別のロガーを宣言する必要はありません。 AppenderRef要素のログレベルを設定できます。

とXMLの例(一部):

<Root level="trace"> 
    <AppenderRef ref="file" level="DEBUG"/> 
    <AppenderRef ref="STDOUT" level="INFO"/> 
</Root> 

しかし、私は、私は自分自身をコンフィギュレーションを作成するときにそれを行うための方法を見つけることができません。たとえば、私はconsoleAppenderBuilderとrootLoggerBuilderを持っている:

AppenderComponentBuilder consoleAppenderBuilder = builder 
    .newAppender("Stdout", "CONSOLE") 
    .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); 

RootLoggerComponentBuilder rootLoggerBuilder = builder 
    .newRootLogger(Level.ERROR) 
    .add(builder.newAppenderRef("Stdout")); 

ルートロガーにコンソールアペンダを追加し、アペンダのログレベルを定義する方法。私はルートロガーに複数のアペンダーを追加したいので、これを求めています。

+0

アペンダーレベルをプログラムで設定する方法を知りたいと思っていましたが、[XY問題](https://meta.stackexchange.com/a/66378)のように感じられます必要な結果を達成するためにプログラムによる設定を行う必要があります。このようにlog4j2を設定する理由を説明してください。プログラムによる設定を避けることができれば、コードがlog4j2の実装に依存するのを防ぎ、代わりにパブリック・インターフェースに依存することができます。 –

答えて

1

RootLoggerに各Appenderのログレベルを設定する1つの方法です - あなたが複数のアペンダを持っている場合は、コードの下に作業することができます

AppenderComponentBuilder consoleAppenderBuilder = builder 
    .newAppender("Stdout", "CONSOLE") 
    .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); 

RootLoggerComponentBuilder rootLoggerBuilder = builder 
    .newRootLogger(Level.ALL) 
    .add(builder.newAppenderRef("Stdout").addAttribute("level", Level.INFO)); 

-

RootLoggerComponentBuilder rootLoggerBuilder = builder 
    .newRootLogger(Level.ALL) 
    .add(builder.newAppenderRef("Stdout").addAttribute("level", Level.INFO)).add(builder.newAppenderRef("fileAppender").addAttribute("level", Level.ERROR)); 

覚えておくだけでポイントがAppenderですログレベルはloggerで与えられたログレベルを減らすことができますが、ログレベルを上げることはできません。

上記の例では、RootLoggerのレベルはLevel.ALLであり、StdoutアペンダーのレベルはLevel.INFOであるとします。したがって、それはINFOレベル以上のログを出力します(WARNERROR)。しかし、逆の動作はしません。すなわち、RootLoggerLevel.INFOStdoutアペンダーがLevel.Allの場合は、INFOレベル以上のログが出力されます。

1

ThresholdFilterを追加すると、example from the manual(MarkerFilterが使用されますが、同様のプロセスである必要があります)のガイドを使用して追加することができます。以下は

関連する問題