logback.xml 檔案
logback.xml
設定檔可以選擇設定寫入 system.log
和 debug.log
的記錄的記錄層級。也可以使用 nodetool setlogginglevels
設定記錄層級。
選項
appender name="<appender_choice>"…</appender>
指定記錄類型和設定。可能的附加程式名稱為:SYSTEMLOG
、DEBUGLOG
、ASYNCDEBUGLOG
和 STDOUT
。SYSTEMLOG
確保 WARN 和 ERROR 訊息會同步寫入指定的檔案。DEBUGLOG
和 ASYNCDEBUGLOG
分別確保 DEBUG 訊息會同步或非同步寫入指定的檔案。STDOUT
會以人類可讀的格式將所有訊息寫入主控台。
範例: <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<level> <log_level> </level>
指定記錄層級。過濾器的一部分。層級為:ALL
、TRACE
、DEBUG
、INFO
、WARN
、ERROR
、OFF
。TRACE
會建立最詳細的記錄,ERROR
則最少。
增加記錄層級可能會在流量中等的叢集上產生大量的記錄輸出。您可以使用 |
預設: INFO
範例: <level>INFO</level>
<rollingPolicy class="<rolling_policy_choice>" <fileNamePattern><pattern_info></fileNamePattern> … </rollingPolicy>
指定將記錄轉移到檔案的政策。
範例: <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern> <pattern_info> </fileNamePattern>
指定將記錄轉移到檔案的模式資訊。轉移政策的一部分。
範例: <fileNamePattern>$\{cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
<maxHistory> <number_of_days> </maxHistory>
指定觸發記錄轉移的最大歷史天數。轉移政策的一部分。
範例: <maxHistory>7</maxHistory>
<encoder> <pattern>…</pattern> </encoder>
指定訊息的格式。轉移政策的一部分。
範例: <maxHistory>7</maxHistory> 範例: <encoder> <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern> </encoder>
記錄到 Cassandra 虛擬表格
可以設定 logback.xml,讓記錄出現在 system_views.system_log
表格中。這是透過在 VirtualTableAppender
類別中實作的附加程式來達成,在預設組態中稱為 CQLLOG
。當附加程式被註解掉時,系統記錄不會寫入虛擬表格。
CQLLOG 附加器很特別,因為它儲存記錄訊息的底層結構無法無限擴充,否則節點就會用盡記憶體。因此,system_log
表格的大小受到限制。預設情況下,它最多可容納 50,000 則記錄訊息,永遠不會超過 100,000 則記錄訊息。
若要指定虛擬表格最多可容納多少列,有一個稱為 cassandra.virtual.logs.max.rows
的系統屬性,其值為整數。
如果您想清除虛擬表格中的所有記錄,例如,儲存一些記憶體,則可以執行 system_views.system_log
的 CQL truncate
查詢。
建議將篩選器設定為至少 WARN
等級,這樣此表格只會保留重要的記錄訊息,因為每則訊息都會佔用記憶體。
預設情況下,虛擬表格的附加器會註解掉,因此不會記錄到虛擬表格。
預設 logback.xml
的內容
<configuration scan="true" scanPeriod="60 seconds">
<jmxConfigurator />
<!-- No shutdown hook; we run it ourselves in StorageService after shutdown -->
<!-- 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.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
<!-- each file should be at most 50MB, keep 7 days worth of history, but at most 5GB -->
<maxFileSize>50MB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-5level [%thread] %date{ISO8601} %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.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${cassandra.logdir}/debug.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
<!-- each file should be at most 50MB, keep 7 days worth of history, but at most 5GB -->
<maxFileSize>50MB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-5level [%thread] %date{ISO8601} %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) -->
<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} %F:%L - %msg%n</pattern>
</encoder>
</appender>
<!-- Uncomment bellow and corresponding appender-ref to activate logback metrics
<appender name="LogbackMetrics" class="com.codahale.metrics.logback.InstrumentedAppender" />
-->
<!-- Uncomment below configuration and corresponding appender-ref to activate
logging into system_views.system_logs virtual table. -->
<!-- <appender name="CQLLOG" class="org.apache.cassandra.utils.logging.VirtualTableAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender> -->
<root level="INFO">
<appender-ref ref="SYSTEMLOG" />
<appender-ref ref="STDOUT" />
<appender-ref ref="ASYNCDEBUGLOG" /> <!-- Comment this line to disable debug.log -->
<!--
<appender-ref ref="LogbackMetrics" />
-->
<!--
<appender-ref ref="CQLLOG"/>
-->
</root>
<logger name="org.apache.cassandra" level="DEBUG"/>
</configuration>