log4j 構成

log4j.properties ファイルは、cygnus-common リポジトリにあるテンプレート conf/log4j.properties.template からインスタンス化することができます。

ログ・パス、ファイル名、ロギング・レベルまたはアペンダのデフォルト値の一部を変更しない限り、その内容を編集しないでください。

# Define some default values.
# These can be overridden by system properties, e.g. the following logs in the standard output, which is very useful
# for testing purposes:
# -Dflume.root.logger=DEBUG,console
flume.root.logger=INFO,LOGFILE
#flume.root.logger=DEBUG,console
flume.log.dir=/var/log/cygnus/
flume.log.file=cygnus.log

# Logging levels for certain components.
log4j.logger.org.apache.flume.lifecycle = INFO
log4j.logger.org.jboss = WARN
log4j.logger.org.mortbay = INFO
log4j.logger.org.apache.avro.ipc.NettyTransceiver = WARN
log4j.logger.org.apache.hadoop = INFO

# Define the root logger to the system property "flume.root.logger".
log4j.rootLogger=${flume.root.logger}

# Stock log4j rolling file appender.
# Default log rotation configuration.
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.MaxFileSize=100MB
log4j.appender.LOGFILE.MaxBackupIndex=10
log4j.appender.LOGFILE.File=${flume.log.dir}/${flume.log.file}
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSzzz} | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | svc=%X{service} | subsvc=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n

# Warning: If you enable the following appender it will fill up your disk if you don't have a cleanup job!
# cleanup job example: find /var/log/cygnus -type f -mtime +30 -exec rm -f {} \;
# This uses the updated rolling file appender from log4j-extras that supports a reliable time-based rolling policy.
# See http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
# Add "DAILY" to flume.root.logger above if you want to use this.
log4j.appender.DAILY=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.DAILY.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.DAILY.rollingPolicy.ActiveFileName=${flume.log.dir}/${flume.log.file}
log4j.appender.DAILY.rollingPolicy.FileNamePattern=${flume.log.dir}/${flume.log.file}.%d{yyyy-MM-dd}
log4j.appender.DAILY.layout=org.apache.log4j.PatternLayout
log4j.appender.DAILY.layout.ConversionPattern=time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSzzz} | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | svc=%X{service} | subsvc=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n

# Console appender, i.e. printing logs in the standar output.
# Add "console" to flume.root.logger above if you want to use this.
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSzzz} | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | svc=%X{service} | subsvc=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n

レイアウトに関して、フィールドごとの説明です :

  • time : ログが生成された日時
  • lvl : log4j ロギングレベル。受け入れられるレベルは、FATAL, ERROR, WARN, INFODEBUG でなければならない。
  • corr : 相関 ID、すべてのIoTプラットフォームに対して一意でトランスバーサルでなければなりません。この ID に関するガイドラインは、何らかの方法で Cygnus エージェントに送信された場合には再利用されなければなりません(例えば Http ヘッダ)。そうでない場合、自動生成されなければなりません
  • trans : トランザクション ID。これは、ユニークで、かつ Cygnus エージェントによって自動生成されていなければなりません。相関 IDを作成する必要がある場合、トランザクション ID と相関 ID は等しくなければなりません
  • srv : 何らかの方法で Cygnus エージェントに送られた FIWARE サービス(例えば Http ヘッダ)* subsrv : 何らかの形で Cygnus エージェントに送信された FIWARE サブサービス(例えば Http ヘッダ)
  • comp : Cygnus エージェントの名前。Flume の実行に使用されるコマンドで渡されるものです
  • op : ログをトレースする Java メソッドの名前
  • msg : トレースされた関数を含むJavaクラス。クラスの特定の行、およびアプリケーションの提供メッセージ