web-dev-qa-db-ja.com

org.slf4j.Loggerのログがコンソールに記録されます。ファイルに記録するにはどうすればよいですか?

出力をログに記録するためにorg.slf4j.Loggerを使用しています。出力はコンソールに送られます。ログファイルにログを記録するにはどうすればよいですか?

 private static final Logger LOG = LoggerFactory.getLogger(ClassName.class );
 LOG.info("Logging output to console");

Log4j.propertiesファイルを使用していません。必要になると思います。

次のlog4j.propertiesファイルを追加して、Eclipseプロジェクトのさまざまな部分に配置しました。

 # Define the file appender
 log4j.appender.FileAppender=org.Apache.log4j.RollingFileAppender
 log4j.appender.FileAppender.File=logger.log
 log4j.appender.FileAppender.layout = org.Apache.log4j.PatternLayout
 log4j.appender.FileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

 # Direct all messages there
 log4j.rootLogger = INFO, FileAppender

私も使った

 PropertyConfigurator.configure("log4j.properties");

ただし、ログファイルは表示されません。 log4j.propertiesは効果がないようです。

9
user840930

最も簡単な方法は、log4j.propertiesファイルでFileAppenderを定義することだと思います。

# Define the file appender
log4j.appender.FileAppender=org.Apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=[log filename].log
log4j.appender.FileAppender.layout = org.Apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Direct all messages there
log4j.rootLogger = INFO, FileAppender

[log filename]関連するファイル名。ファイルがプロジェクトディレクトリにある場合、Eclipseからプロジェクトを実行すると、Log4jがファイルを自動的に見つけることができると思いますが、100%確実ではありません。アプリケーションの開始時にPropertyConfiguratorを使用して、プロパティファイルの場所をLog4jに通知できます。例:

PropertyConfigurator.configure("log4j.properties");
4
Chris Mantle

リソースフォルダーにlog4j.xmlを作成できます。

  1. クラスにlog4jパッケージをインポートします。
  2. クラス内で、Logger.getLogger()静的メソッドを使用してロガーオブジェクトをインスタンス化します。
  3. アペンダーに割り当てられるレイアウト(既製またはユーザー定義)をインスタンス化します。
  4. アペンダーをインスタンス化し、レイアウトオブジェクトをパラメーターとしてコンストラクターに渡すことで、アペンダーに必要なレイアウトを割り当てます。
  5. 必要なアペンダーをパラメーターとして指定してaddAppender()メソッドを呼び出すことにより、インスタンス化されたアペンダーをLoggerオブジェクトに割り当てます。
  6. Loggerオブジェクトで適切な印刷メソッドを呼び出して、ロギングを実行します。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.Apache.org/log4j/">

    <appender name="CONSOLE" class="org.Apache.log4j.ConsoleAppender">
        <layout class="org.Apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%p [%t] %c{1}.%M(%L) | %m%n" />
        </layout>
    </appender>
    <appender name="FILE" class="org.Apache.log4j.rolling.RollingFileAppender">
        <rollingPolicy class="org.Apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="fileNamePattern" value="/yourfolder/debug_%d{dd-MM-yy}.log" />

        </rollingPolicy>
        <layout class="org.Apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%p [%t] %c{1}.%M(%L) | %m%n" />
        </layout>

    </appender>
    <root>
        <level value="WARN" />
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</log4j:configuration>
2
jos