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 的更多详细信息,请参阅其 手册。