サーチ…


前書き

Apache Log4jはJavaベースのロギング・ユーティリティーであり、いくつかのJavaロギング・フレームワークの1つです。このトピックでは、Log4jをJavaでセットアップして設定する方法を、使用可能なすべての側面についての詳細な例とともに示します。

構文

  • Logger.debug( "text to log"); //デバッグ情報を記録する
  • Logger.info( "text to log"); //共通情報を記録する
  • Logger.error( "text to log"); //ロギングエラー情報
  • Logger.warn( "text to log"); //警告のロギング
  • Logger.trace( "text to log"); //トレース情報を記録する
  • Logger.fatal( "text to log"); //致命的なエラーを記録する
  • パラメータロギングを使用したLog4j2の使用法:
  • Logger.debug( "デバッグparams {} {} {}"、param1、param2、param3); //パラメータを使用してデバッグを記録する
  • Logger.info( "Info params {} {} {}"、param1、param2、param3); //パラメータ付きのロギング情報
  • Logger.error( "エラーparams {} {} {}"、param1、param2、param3); //パラメータのロギングエラー
  • Logger.warn( "params {} {} {}"、param1、param2、param3)を警告します。 //パラメータで警告を記録する
  • Logger.trace( "Trace params {} {} {、" param1、param2、param3); //パラメータを使用してトレースを記録する
  • Logger.fatal( "致命的なparams {} {} {}"、param1、param2、param3); //パラメータで致命的なロギング
  • Logger.error( "Caught Exception:"、ex); //メッセージとスタックトレースを伴う例外のロギング(自動的に追加されます)

備考

Log4j 1の寿命が終わった

2015年8月5日、Logging Servicesプロジェクト管理委員会はLog4j 1.xの寿命が終了したことを発表しました。発表の全文については、Apache Blogを参照してください。 Log4j 1のユーザーは、Apache Log4j 2にアップグレードすることをお勧めします

投稿者http : //logging.apache.org/log4j/1.2/

Log4jの入手方法

現在のバージョン(log4j2)

Mavenの使用:
POM.xmlファイルに次の依存関係を追加します。

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.6.2</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

Ivyを使う:

<dependencies>
  <dependency org="org.apache.logging.log4j" name="log4j-api" rev="2.6.2" />
  <dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.6.2" />
</dependencies>

Gradleを使用する:

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
  compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6.2'
}

log4j 1.xの入手


注: Log4j 1.xはEOL(End-Of-Life)に達しました(「備考」を参照)。


Mavenの使用:

この依存関係をPOM.xmlファイルに宣言します。

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

Ivyを使う:

<dependency org="log4j" name="log4j" rev="1.2.17"/>

Usign Gradle:

compile group: 'log4j', name: 'log4j', version: '1.2.17'

Buildrの使用:

'log4j:log4j:jar:1.2.17'

手動でパスビルドを追加する:

Log4j ウェブサイトプロジェクトからダウンロードする

Log4jをJavaコードで使用する方法

最初にfinal static loggerオブジェクトを作成する必要があります。

final static Logger logger = Logger.getLogger(classname.class);

次に、ロギングメソッドを呼び出します。

//logs an error message
logger.info("Information about some param: " + parameter); // Note that this line could throw a NullPointerException!

//in order to improve performance, it is advised to use the `isXXXEnabled()` Methods
if( logger.isInfoEnabled() ){
    logger.info("Information about some param: " + parameter);
}

// In log4j2 parameter substitution is preferable due to readability and performance
// The parameter substitution only takes place if info level is active which obsoletes the use of isXXXEnabled().
logger.info("Information about some param: {}" , parameter);

//logs an exception
logger.error("Information about some error: ", exception);

プロパティファイルの設定

Log4jを使用すると、同時にデータをコンソールとファイルに記録することができます。 log4j.propertiesファイルを作成し、この基本構成の中に入れます。

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Mavenを使用している場合は、このプロパティファイルを次のパスに入れます。

/ProjectFolder/src/java/resources

基本的なlog4j2.xml設定ファイル

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-5p [%t] %C{2} %m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="debug">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>

これは、コンソールアペンダーとルートロガーを持つ基本的なlog4j2.xml構成です。パターンレイアウトは、ステートメントのロギングにどのパターンを使用すべきかを指定します。
log4j2.xmlのロードをデバッグするには、属性status = <WARN | DEBUG | ERROR | FATAL | TRACE | INFO>をlog4j2.xmlの構成タグに追加します。
モニター間隔を追加して、指定された間隔の期間後に構成を再度ロードすることもできます。モニター間隔は、構成タグに次のように追加できますmonitorInterval = 30 。これは、設定が30秒ごとにロードされることを意味します。

log4j 1.xから2.xへの移行

プロジェクトの既存のlog4j 1.xからlog4j 2.xに移行する場合は、既存のlog4j 1.xの依存関係をすべて削除し、次の依存関係を追加します。

Log4j 1.x API Bridge

Mavenビルド

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

アイビービルド

<dependencies>
  <dependency org="org.apache.logging.log4j" name="log4j-1.2-api" rev="2.6.2" />
</dependencies>

Gradle Build

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: '2.6.2'
}

Apache Commons Logging Bridgeプロジェクトでlog4j 1.xを使用するApache Commons Loggingを使用していて、それをlog4j 2.xに移行する場合は、次の依存関係を追加します。

Mavenビルド

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

アイビービルド

<dependencies>
  <dependency org="org.apache.logging.log4j" name="log4j-jcl" rev="2.6.2" />
</dependencies>

Gradle Build

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.6.2'
}

注意:Apacheコモンログの既存の依存関係を削除しないでください

リファレンス: https : //logging.apache.org/log4j/2.x/maven-artifacts.html

プロパティ - DBにログするファイル

この例を使用するには、データベースが動作しているシステムと互換性のあるJDBCドライバが必要です。 IBM System i上のDB2データベースに接続できるオープンソースのものは、ここにあります: JT400

この例はDB2固有のものですが、ドライバを交換してJDBC URLを適合させると、ほとんどの他のシステムで動作します。

# Root logger option
log4j.rootLogger= ERROR, DB

# Redirect log messages to a DB2
# Define the DB appender   
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender

# Set JDBC URL (!!! adapt to your target system !!!)
log4j.appender.DB.URL=jdbc:as400://10.10.10.1:446/DATABASENAME;naming=system;errors=full;

# Set Database Driver (!!! adapt to your target system !!!)
log4j.appender.DB.driver=com.ibm.as400.access.AS400JDBCDriver

# Set database user name and password
log4j.appender.DB.user=USER
log4j.appender.DB.password=PASSWORD

# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO DB.TABLENAME VALUES('%d{yyyy-MM-dd}','%d{HH:mm:ss}','%C','%p','%m')

# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

ログ出力をレベル別にフィルタリングする(log4j 1.x)

フィルターを使用して、たとえばERRORレベルよりも「低い」メッセージのみを記録することができます。 しかし、FilterはPropertyConfiguratorではサポートされていません。したがって、XML設定を使用するには、XML設定に変更する必要がありますフィルタについてはlog4j-Wikiを参照してください。

例 "特定のレベル"

<appender name="info-out" class="org.apache.log4j.FileAppender"> 
            <param name="File" value="info.log"/> 
            <layout class="org.apache.log4j.PatternLayout"> 
                    <param name="ConversionPattern" value="%m%n"/> 
            </layout> 
            <filter class="org.apache.log4j.varia.LevelMatchFilter">
                    <param name="LevelToMatch" value="info" />
                    <param name="AcceptOnMatch" value="true"/>
            </filter>
            <filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender> 

または「レベル範囲」

<appender name="info-out" class="org.apache.log4j.FileAppender"> 
            <param name="File" value="info.log"/> 
            <layout class="org.apache.log4j.PatternLayout"> 
                    <param name="ConversionPattern" value="%m%n"/> 
            </layout> 
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="LevelMax" value="info"/>
                    <param name="LevelMin" value="info"/>
                    <param name="AcceptOnMatch" value="true"/>
            </filter>
</appender>


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow