第20章 Log
Apache Karaf は、動的で強力なロギングシステムを提供します。
以下をサポートします。
- OSGi ログサービス
- Apache Log4j v1 および v2 フレームワーク
- Apache Commons Logging フレームワーク
- Logback フレームワーク
- SLF4J フレームワーク
- ネイティブ Java Util Logging フレームワーク
つまり、アプリケーションはすべてのロギングフレームワークを使用でき、Apache Karaf は中央のログシステムを使用してロガーやアペンダーなどを管理できます。
20.1. 設定ファイル
初期ログ設定は、etc/org.ops4j.pax.logging.cfg
からロードされます。
このファイルは 標準の Log4j2 設定ファイル です。
さまざまな Log4j2 要素があります。
- loggers
- アペンダー
- レイアウト
独自の初期設定を直接ファイルに追加できます。
デフォルト設定は以下のとおりです。
# # Copyright 2005-2018 Red Hat, Inc. # # Red Hat licenses this file to you under the Apache License, version # 2.0 (the "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. See the License for the specific language governing # permissions and limitations under the License. # # # Internal Log4j2 configuration # log4j2.status = WARN log4j2.verbose = false log4j2.dest = out # # Common pattern layouts for appenders defined as reusable properties # See https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout # references will be replaced by felix.fileinstall # log4j2.pattern = %d{DEFAULT} | %-5.5p | %-20.20t | %-32.32c{1.} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n #log4j2.pattern = %d{DEFAULT} %-5.5p {%t} [%C.%M()] (%F:%L) : %m%n # # Appenders configuration # # JDBC Appender log4j2.appender.jdbc.type = JDBC log4j2.appender.jdbc.name = JdbcAppender log4j2.appender.jdbc.tableName = EVENTS log4j2.appender.jdbc.cs.type = DataSource log4j2.appender.jdbc.cs.lazy = true log4j2.appender.jdbc.cs.jndiName = osgi:service/jdbc/logdb log4j2.appender.jdbc.c1.type = Column log4j2.appender.jdbc.c1.name = DATE log4j2.appender.jdbc.c1.isEventTimestamp = true log4j2.appender.jdbc.c2.type = Column log4j2.appender.jdbc.c2.name = LEVEL log4j2.appender.jdbc.c2.pattern = %level log4j2.appender.jdbc.c2.isUnicode = false log4j2.appender.jdbc.c3.type = Column log4j2.appender.jdbc.c3.name = SOURCE log4j2.appender.jdbc.c3.pattern = %logger log4j2.appender.jdbc.c3.isUnicode = false log4j2.appender.jdbc.c4.type = Column log4j2.appender.jdbc.c4.name = THREAD_ID log4j2.appender.jdbc.c4.pattern = %thread log4j2.appender.jdbc.c4.isUnicode = false log4j2.appender.jdbc.c5.type = Column log4j2.appender.jdbc.c5.name = MESSAGE log4j2.appender.jdbc.c5.pattern = %message log4j2.appender.jdbc.c5.isUnicode = false # Console appender not used by default (see log4j2.rootLogger.appenderRefs) log4j2.appender.console.type = Console log4j2.appender.console.name = Console log4j2.appender.console.layout.type = PatternLayout log4j2.appender.console.layout.pattern = ${log4j2.pattern} # Rolling file appender log4j2.appender.rolling.type = RollingRandomAccessFile log4j2.appender.rolling.name = RollingFile log4j2.appender.rolling.fileName = ${karaf.data}/log/fuse.log log4j2.appender.rolling.filePattern = ${karaf.data}/log/fuse-%i.log.gz # uncomment to not force a disk flush #log4j2.appender.rolling.immediateFlush = false log4j2.appender.rolling.append = true log4j2.appender.rolling.layout.type = PatternLayout log4j2.appender.rolling.layout.pattern = ${log4j2.pattern} log4j2.appender.rolling.policies.type = Policies log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy log4j2.appender.rolling.policies.size.size = 16MB log4j2.appender.rolling.strategy.type = DefaultRolloverStrategy log4j2.appender.rolling.strategy.max = 20 # Audit file appender log4j2.appender.audit.type = RollingRandomAccessFile log4j2.appender.audit.name = AuditRollingFile log4j2.appender.audit.fileName = ${karaf.data}/security/audit.log log4j2.appender.audit.filePattern = ${karaf.data}/security/audit.log.%i log4j2.appender.audit.append = true log4j2.appender.audit.layout.type = PatternLayout log4j2.appender.audit.layout.pattern = ${log4j2.pattern} log4j2.appender.audit.policies.type = Policies log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy log4j2.appender.audit.policies.size.size = 8MB # OSGi appender log4j2.appender.osgi.type = PaxOsgi log4j2.appender.osgi.name = PaxOsgi log4j2.appender.osgi.filter = * # # Loggers configuration # # Root logger log4j2.rootLogger.level = INFO log4j2.rootLogger.appenderRef.RollingFile.ref = RollingFile log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi log4j2.rootLogger.appenderRef.Console.ref = Console log4j2.rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter log4j2.rootLogger.appenderRef.Console.filter.threshold.level = ${karaf.log.console:-OFF} #log4j2.rootLogger.appenderRef.Sift.ref = Routing # Spifly logger log4j2.logger.spifly.name = org.apache.aries.spifly log4j2.logger.spifly.level = WARN # Security audit logger log4j2.logger.audit.name = org.apache.karaf.jaas.modules.audit log4j2.logger.audit.level = INFO log4j2.logger.audit.additivity = false log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile # help with identification of maven-related problems with pax-url-aether #log4j2.logger.aether.name = shaded.org.eclipse.aether #log4j2.logger.aether.level = TRACE #log4j2.logger.http-headers.name = shaded.org.apache.http.headers #log4j2.logger.http-headers.level = DEBUG #log4j2.logger.maven.name = org.ops4j.pax.url.mvn #log4j2.logger.maven.level = TRACE
デフォルト設定では、out
ファイルアペンダーを使用して、INFO
ログレベルで ROOT
ロガーを定義します。ログレベルは、Log4j2 の有効な値に変更できます。最も詳細度の低いものから高いものまで、TRACE、DEBUG、INFO、ERROR、または FATAL を指定できます。
- OSGi アペンダー
-
osgi:*
アペンダーは、ログメッセージを OSGi Log Service に送信する特別なアペンダーです。 - stdout アペンダー
-
stdout
コンソールアペンダーは事前設定されていますが、デフォルトでは有効になっていません。このアペンダーを使用すると、ログメッセージを標準出力に直接表示できます。サーバーモードで Apache Karaf を実行する予定 (コンソールなし) の場合は便利です。
有効にするには、stdout
アペンダーを rootLogger
に追加する必要があります。
log4j2.rootLogger=INFO, out, stdout, osgi:*
- out アペンダー
-
out
アペンダーは、デフォルトのアペンダーです。これは、1MB ログファイル 10 個を管理してローテーションするローリングファイルアペンダーです。ログファイルはデフォルトでdata/log/fuse.log
にあります。 - SIFT アペンダー
-
sift
アペンダーは、デフォルトでは有効になっていません。このアペンダーを使用すると、デプロイされたバンドルごとに 1 つのログファイルを作成することができます。デフォルトでは、ログファイルの名前の形式は、バンドルのシンボリック名 (data/log
フォルダーの) を使用します。このファイルはランタイム時に編集できます。Apache Karaf はファイルを再読み込みし、変更を有効にします。Apache Karaf を再起動する必要はありません。別の設定ファイルは Apache Karaf により使用されます (etc/org.apache.karaf.log.cfg
)。このファイルは、ログコマンドによって使用されるログサービスを設定します (後で参照してください)。 - JDBC アペンダー
-
jdbc
アペンダーにはlazy
フラグがあり、true
(有効) で、データソースが利用できない場合は、ロギングはデータベースに追加されません。ただし、jndi、データソース、または接続が戻ると、ロギングが再起動されます。
log4j2.appender.jdbc.cs.lazy = true
ログメッセージが失われないようにするには、緊急アペンダーを設定することもできます。