ロギングの構成
ロギング機能では、ログバックをバックエンドにしてSimple Logging Facade for Java(SLF4J)を使用します。
logback.xml
logback.xmlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/logback.xml |
tarボール・インストール | installation_location/resources/cassandra/conf/logback.xml |
ロギング機能では、ログバックをバックエンドにしてSimple Logging Facade for Java(SLF4J)を使用します。ログは、ロギング・ディレクトリーのsystem.logとdebug.logに書き込まれます。ロギングは、プログラムで、あるいは手動で設定できます。手動でロギングを設定するには:
nodetool setlogginglevel
コマンドを実行します。- DataStax Enterpriseでインストールされるlogback-test.xmlまたはlogback.xml ファイルを構成します。
- JConsoleツールを使用して、JMXからロギングを設定します。
ログバックは最初にlogback-test.xmlを探し、次にlogback.xml ファイルを探します。
<configuration scan="true"> <jmxConfigurator /> <!-- SYSTEMLOG rolling file appender to system.log (INFO level) --> <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <file>${cassandra.logdir}/system.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${cassandra.logdir}/system.log.%i.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>20MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%-5level [%thread] %date{ISO8601} %X{service} %F:%L - %msg%n</pattern> </encoder> </appender> <!-- DEBUGLOG rolling file appender to debug.log (all levels) --> <appender name="DEBUGLOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${cassandra.logdir}/debug.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${cassandra.logdir}/debug.log.%i.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>20MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%-5level [%thread] %date{ISO8601} %X{service} %F:%L - %msg%n</pattern> </encoder> </appender> <!-- ASYNCLOG assynchronous appender to debug.log (all levels) --> <appender name="ASYNCDEBUGLOG" class="ch.qos.logback.classic.AsyncAppender"> <queueSize>1024</queueSize> <discardingThreshold>0</discardingThreshold> <includeCallerData>true</includeCallerData> <appender-ref ref="DEBUGLOG" /> </appender> <!-- STDOUT console appender to stdout (INFO level) --> <if condition='isDefined("dse.console.useColors")'> <then> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <withJansi>true</withJansi> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <pattern>%highlight(%-5level) [%thread] %green(%date{ISO8601}) %yellow(%X{service}) %F:%L - %msg%n<$ </encoder> </appender> </then> </if> <if condition='isNull("dse.console.useColors")'> <then> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <pattern>%-5level [%thread] %date{ISO8601} %X{service} %F:%L - %msg%n</pattern> </encoder> </appender> </then> </if> <include file="${SPARK_SERVER_LOGBACK_CONF_FILE}"/> <include file="${GREMLIN_SERVER_LOGBACK_CONF_FILE}"/> <!-- Uncomment the LogbackMetrics appender and the corresponding appender-ref in the root to activate <appender name="LogbackMetrics" class="com.codahale.metrics.logback.InstrumentedAppender" /> --> <root level="${logback.root.level:-INFO}"> <appender-ref ref="SYSTEMLOG" /> <appender-ref ref="STDOUT" /> <!-- Comment out the ASYNCDEBUGLOG appender to disable debug.log --> <appender-ref ref="ASYNCDEBUGLOG" /> <!-- Uncomment LogbackMetrics and its associated appender to enable metric collecting for logs. --> <!-- <appender-ref ref="LogbackMetrics" /> --> <appender-ref ref="SparkMasterFileAppender" /> <appender-ref ref="SparkWorkerFileAppender" /> <appender-ref ref="GremlinServerFileAppender" /> </root> <!--audit log--> <appender name="SLF4JAuditWriterAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${cassandra.logdir}/audit/audit.log</file> <encoder> <pattern>%-5level [%thread] %date{ISO8601} %X{service} %F:%L - %msg%n</pattern> <immediateFlush>true</immediateFlush> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${cassandra.logdir}/audit/audit.log.%i.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>5</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>200MB</maxFileSize> </triggeringPolicy> </appender> <logger name="SLF4JAuditWriter" level="INFO" additivity="false"> <appender-ref ref="SLF4JAuditWriterAppender"/> </logger> <appender name="DroppedAuditEventAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" prudent=$ <file>${cassandra.logdir}/audit/dropped-events.log</file> <encoder> <pattern>%-5level [%thread] %date{ISO8601} %X{service} %F:%L - %msg%n</pattern> <immediateFlush>true</immediateFlush> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${cassandra.logdir}/audit/dropped-events.log.%i.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>5</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>200MB</maxFileSize> </triggeringPolicy> </appender> <logger name="DroppedAuditEventLogger" level="INFO" additivity="false"> <appender-ref ref="DroppedAuditEventAppender"/> </logger> <logger name="org.apache.cassandra" level="DEBUG"/> <logger name="com.datastax.bdp.db" level="DEBUG"/> <logger name="com.datastax.driver.core.NettyUtil" level="ERROR"/> <logger name="com.datastax.bdp.search.solr.metrics.SolrMetricsEventListener" level="DEBUG"/> <logger name="org.apache.solr.core.CassandraSolrConfig" level="WARN"/> <logger name="org.apache.solr.core.SolrCore" level="WARN"/> <logger name="org.apache.solr.core.RequestHandlers" level="WARN"/> <logger name="org.apache.solr.handler.component" level="WARN"/> <logger name="org.apache.solr.search.SolrIndexSearcher" level="WARN"/> <logger name="org.apache.solr.update" level="WARN"/> <logger name="org.apache.lucene.index" level="INFO"/> <logger name="com.cryptsoft" level="OFF"/> <logger name="org.apache.spark.rpc" level="ERROR"/> </configuration>
appendername="appender"
として定義され、以下のように記述されます。 - SYSTEMLOG
- ログを管理し、警告メッセージとエラー・メッセージを同時に/var/log/cassandra/system.logファイルに書き込みます。
- DEBUGLOG | ASYNCDEBUGLOG
- /var/log/cassandra/debug.logファイルを生成します。このファイルには、system.logファイルに書き込まれるイベントの非同期ログと、デバッグ問題発生時に役立つプロダクション・ロギング情報が格納されます。
- STDOUT
- ユーザーが読み取れる形式でログをコンソールに誘導します。
- LogbackMetrics
- ロギング・レベル別に記録されたイベントの割合を記録します。
- SLF4JAuditWriterAppender | DroppedAuditEventAppender
- 監査ロギング機能で使用します。詳細については、「データベース監査の設定」を参照してください。
- ローリング・ポリシー
- ログをアーカイブにローリングするためのポリシー
- ログ・ファイルの場所と名前
- アーカイブの場所と名前
- ローリングをトリガーする最小ファイル・サイズと最大ファイル・サイズ
- メッセージの形式
- ログ・レベル
ログ・レベル
レベル
設定の有効値には、すべてのレベルの情報をロギングする「ALL」、「TRACE」から「ERROR」まで、さらにロギングなしの「OFF」があります。TRACEで最も冗長なログが作成され、ERRORで最も低いレベルのログが作成されます。- ALL
- TRACE
- DEBUG
- INFO(デフォルト)
- WARN
- ERROR
- OFF
bin\nodetool getlogginglevels Logger Name Log Level ROOT INFO com.thinkaurelius.thrift ERROR
nodetool setlogginglevel
をコンポーネントまたはクラスがあることを確認してから、installation_location/confのlogback.xmlファイルで設定します。ファイルの末尾に以下のような行を含めます。<logger name="org.apache.cassandra.gms.FailureDetector" level="DEBUG"/>変更を有効にするには、ノードを再起動します。
log4jからログバックへの移行
log4jを使用していた前のバージョンからアップグレードしている場合は、ログバックPropertiesTranslator Webアプリケーションを使用してlog4j.propertiesファイルをlogback.xmlに変換することができます。
ログ・ファイルのローテーションの使用
デフォルトのポリシーでは、サイズが20MBを超えると、system.logファイルをローリングします。アーカイブはzip形式で圧縮されます。ログバックは、ログ・ファイルにsystem.log.1.zip、system.log.2.zipなどの名前を付けます。詳細については、ログバックのドキュメントを参照してください。
拡張コンパクション・ロギングの有効化
ノードのコンパクション・アクティビティーに関する詳細な情報収集の構成と、専用ログ・ファイルへの書き込みについては、「コンパクションのlog_all
プロパティ」を参照してください。