java - 将rabbitMQ消息日志分离到不同的日志文件中

标签 java spring logging log4j rabbitmq

我正在开发一个 Spring Hibernate 项目,该项目使用 Spring AMQP RabbitMQ 实现进行消息传递。 rabbitmq 配置位于一个单独的 xml 中,该 xml 被导入到根应用程序上下文中。 rabbitmq监听接收器每秒轮询队列一次。重要的日志消息被埋在转储到日志文件中的大量调试级轮询消息之下。

2015-10-11 18:12:02.0031 DEBUG SimpleAsyncTaskExecutor-1 org.springframework.amqp.rabbit.listener.BlockingQueueConsumer – Retrieving delivery for Consumer: tags=[[amq.ctag-p4K9s4EoXAbxKWufSzX_-w]], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.0.1:5672/,1), acknowledgeMode=AUTO local queue size=0
2015-10-11 18:12:03.0032 DEBUG SimpleAsyncTaskExecutor-1 org.springframework.amqp.rabbit.listener.BlockingQueueConsumer – Retrieving delivery for Consumer: tags=[[amq.ctag-p4K9s4EoXAbxKWufSzX_-w]], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.0.1:5672/,1), acknowledgeMode=AUTO local queue size=0

有没有办法将此轮询日志记录分离到不同的文件中或阻止其污染日志?

我使用 log4j 进行日志记录;配置如下。

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\Users\\xxx\\xxxx.log
log4j.appender.file.MaxFileSize=2MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n


# Root logger option
log4j.rootLogger=DEBUG, file, stdout

最佳答案

添加此语句(我省略了第二个文件记录器file2的完整配置)

log4j.appender.file2=org.apache.log4j.RollingFileAppender
log4j.appender.file2.File=C:\\Users\\xxx\\other.log
...

log4j.logger.org.springframework.amqp.rabbit.listener.BlockingQueueConsumer=DEBUG, file2
log4j.additivity.org.springframework.amqp.rabbit.listener.BlockingQueueConsumer=false

这会将日志条目从 org.springframework.amqp.rabbit.listener.BlockingQueueConsumer 放入另一个日志文件。

<小时/>

如果您根本不想拥有此日志,请使用

log4j.logger.org.springframework.amqp.rabbit.listener.BlockingQueueConsumer=WARN

相反。

@参见:log4j: Log output of a specific class to a specific appender

关于java - 将rabbitMQ消息日志分离到不同的日志文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33065413/

相关文章:

java - 如何让线程等待,直到另一个线程完成该方法执行

Java 日志记录说明

c# - 您可以在代码中配置 log4net 而不是使用配置文件吗?

java - Dwr回调 "data"对象长度

java - Selenium WD |如何将 WebElement 列表中的所有值复制到字符串列表中?

java - Spring会自动关闭DataSource吗?是否需要关闭?

java - 配置 logback 以抑制来自包内所有类的日志记录

java - try/catch 不适用于静态成员可抛出类?

java - 使用 ProcessBuilder 重新启动后 Swing 应用程序变慢

java - 将 spring oauth db 从内存迁移到 jdbc