48

私は2つのことをしたい:

  1. 特定のログレベルでコンソールにログを記録する
  2. 別のログ レベルでファイルにログを記録する

コンソール ロギングは正常に機能しているように見えますが、ログ ファイルは空のままです。

これは私のlog4j2.xmlです

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>

    <File name="MyFile" fileName="logs/app.log" immediateFlush="true">
        <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>  

  </appenders>
  <loggers>

    <logger name="filelogger" level="error">
        <appender-ref ref="MyFile"/>
    </logger>

    <root level="info">
      <appender-ref ref="Console"/>
    </root>
  </loggers>
</configuration>

何が間違っている可能性がありますか?

4

5 に答える 5

18

Daker は修正した構成ファイルを置いていましたが、それについては説明しませんでした。ここで説明を加えたいと思います。Log4j2 Documentation hereで引用されているように、指定された要件では <Logger> タグを使用する必要はありませんでした。さらに、いつ <Logger> タグを使用する必要がありますか? 以下の説明をドキュメントから読んでください。

おそらく、com.foo.Bar を除くすべてのものからすべての TRACE 出力を排除することが望まれます。ログ レベルを変更するだけでは、タスクは完了しません。代わりに、新しいロガー定義を構成に追加することで解決できます。

<Loggers>
  <Logger name="com.foo.Bar" level="TRACE"/> 
  <Root level="ERROR">  
    <AppenderRef ref="STDOUT"> 
  </Root>
  ...
</Loggers>
于 2015-05-19T09:39:51.340 に答える
7

<logger name="filelogger" level="error" >
これが問題になるはずです。通常、ロガーの名前はパッケージ名です (具体的に名前を付けていない限りfilelogger)。
試す<logger name="com.yourpackage" level="error" additivity="true">

Log4j2 Docを参照

于 2013-07-02T06:41:04.660 に答える