Apache ActiveMQ Artemis 使用 SLF4J 記錄外觀進行記錄,代理程式組件提供 Log4J 2 作為記錄實作。當透過執行 run
命令啟動代理程式時,可透過代理程式實例 etc
目錄中的 log4j2.properties
檔案進行設定,該檔案預設設定為記錄到主控台和檔案。對於其他 CLI 命令,可透過代理程式實例 etc
目錄中的 log4j2-utility.properties
檔案進行設定,該檔案預設設定為僅將錯誤記錄到主控台(除了通常的命令輸出外)。
有一些可用的通用記錄器
記錄器 | 描述 |
---|---|
rootLogger |
記錄 Apache ActiveMQ Artemis 記錄器未處理的任何呼叫 |
org.apache.activemq.artemis.core.server |
記錄核心伺服器 |
org.apache.activemq.artemis.utils |
記錄工具呼叫 |
org.apache.activemq.artemis.journal |
記錄日誌呼叫 |
org.apache.activemq.artemis.jms |
記錄 JMS 呼叫 |
org.apache.activemq.artemis.integration.bootstrap |
記錄啟動呼叫 |
org.apache.activemq.audit.base |
稽核記錄。預設停用 |
org.apache.activemq.audit.resource |
資源稽核記錄。預設停用 |
org.apache.activemq.audit.message |
訊息稽核記錄。預設停用 |
1. 設定記錄器的特定級別
有時需要從特定記錄器取得更詳細的記錄。例如,當您嘗試排除問題時。假設您需要從記錄器 org.foo
取得 TRACE 記錄。
然後您需要將 org.foo
記錄器的記錄級別設定為 TRACE
,例如
logger.my_logger_ref.name=org.foo logger.my_logger_ref.level=TRACE
2. 重新載入設定
Log4J2 有自己的設定檔重新載入機制,該機制本身是透過相同的 log4j2.properties 設定檔進行設定的。若要啟用設定更新時重新載入,請將 monitorInterval
設定屬性設定為應監控檔案更新的間隔(以秒為單位),例如
# Monitor config file every 5 seconds for updates monitorInterval = 5
3. 在客戶端應用程式中記錄
首先,如果您想在客戶端啟用記錄,您需要在您的應用程式中包含支援 SLF4J 外觀的記錄實作。以 Log4J2 作為記錄實作為例,由於它由代理程式使用,因此當使用 Maven 時,您的客戶端和記錄相依性可能如下所示,例如:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jms-client</artifactId>
<version>2.38.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.24.1</version>
</dependency>
然後可以透過類別路徑中名為 log4j2.properties
的檔案提供 Log4J2 設定,該檔案將會自動拾取。
或者,可以使用系統屬性 log4j2.configurationFile
設定特定設定檔的使用,例如:
-Dlog4j2.configurationFile=file:///path/to/custom-log4j2-config.properties
以下是客戶端應用程式的 log4j2.properties
範例,以 INFO 級別記錄到主控台和每日滾動檔案。
# Log4J 2 configuration # Monitor config file every X seconds for updates monitorInterval = 5 rootLogger.level = INFO rootLogger.appenderRef.console.ref = console rootLogger.appenderRef.log_file.ref = log_file logger.activemq.name=org.apache.activemq logger.activemq.level=INFO # Console appender appender.console.type=Console appender.console.name=console appender.console.layout.type=PatternLayout appender.console.layout.pattern=%d %-5level [%logger] %msg%n # Log file appender appender.log_file.type = RollingFile appender.log_file.name = log_file appender.log_file.fileName = log/application.log appender.log_file.filePattern = log/application.log.%d{yyyy-MM-dd} appender.log_file.layout.type = PatternLayout appender.log_file.layout.pattern = %d %-5level [%logger] %msg%n appender.log_file.policies.type = Policies appender.log_file.policies.cron.type = CronTriggeringPolicy appender.log_file.policies.cron.schedule = 0 0 0 * * ? appender.log_file.policies.cron.evaluateOnStartup = true
4. 設定代理程式稽核記錄
有 3 個稽核記錄器可以單獨啟用,並稽核不同類型的代理程式事件,它們是
-
base:這是一個非常詳細的記錄器,將會捕捉 JMX Bean 上發生的大多數事件。
-
resource:這會記錄資源(例如位址和佇列)以及驗證的建立、更新和刪除。其主要目的是追蹤主控台活動和對代理程式的存取。
-
message:這會記錄訊息的生產和消費。
所有額外的記錄都會對效能產生負面影響。效能影響是否「過大」將取決於您的使用案例。 |
這三個稽核記錄器預設在代理程式 log4j2.properties
設定檔中停用
... # Audit loggers: to enable change levels from OFF to INFO logger.audit_base.name = org.apache.activemq.audit.base logger.audit_base.level = OFF logger.audit_base.appenderRef.audit_log_file.ref = audit_log_file logger.audit_base.additivity = false logger.audit_resource.name = org.apache.activemq.audit.resource logger.audit_resource.level = OFF logger.audit_resource.appenderRef.audit_log_file.ref = audit_log_file logger.audit_resource.additivity = false logger.audit_message.name = org.apache.activemq.audit.message logger.audit_message.level = OFF logger.audit_message.appenderRef.audit_log_file.ref = audit_log_file logger.audit_message.additivity = false ...
若要啟用稽核記錄,請將級別變更為 INFO
,如下所示
logger.audit_base.level = INFO ... logger.audit_resource.level = INFO ... logger.audit_message.level = INFO
這 3 個稽核記錄器可以單獨停用/啟用。
啟用後,所有稽核記錄都會寫入單獨的記錄檔(預設為 audit.log
)。
5. 關於 Log4J2 設定的更多資訊:
有關設定 Log4J 2 的更多詳細資訊,請參閱其手冊。