在生产环境中,我只记录WARN和ERROR日志消息。Log4j为生产中的特定用户记录自定义级别
我需要实现一种机制,记录(a)特定用户的所有日志级别。
我正在处理来自外部的请求(不一定是servlet),从一开始我就可以检索用户名,所以我可以将用户名放在MDC中,并且它会转到日志消息。
但是,我需要检查用户名是否在预定义的用户列表中(此列表实际上可以在运行时动态更新),如果用户名称在此列表中,那么我需要启用(仅限此用户)记录来自fx。 TRACE级别(意味着所有TRACE,DEBUG,INFO,WARN和ERROR)。
这可能吗?
更新#1:我们正在使用Spring启动的Log4j
更新#2:Log4j的配置
LOG_PATTERN=%d{yyyy-MM-dd HH:mm:ss.SSS} %X{context} ${PID} %5p %-10X{username} [%t] - %c{1}(%L): %m%n
log4j.rootCategory=INFO, amqp
log4j.category.org.springframework=WARN
log4j.category.com.acme=DEBUG
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/app.log
log4j.appender.file.MaxFileSize=100MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=${LOG_PATTERN}
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN}
log4j.appender.amqp=org.springframework.amqp.rabbit.log4j.AmqpAppender
log4j.appender.amqp.host=localhost
log4j.appender.amqp.port=5671
log4j.appender.amqp.username=username
log4j.appender.amqp.password=password
log4j.appender.amqp.virtualHost=vhost
log4j.appender.amqp.exchangeName=logging.pub
log4j.appender.amqp.exchangeType=topic
log4j.appender.amqp.routingKeyPattern=%c.%p
log4j.appender.amqp.declareExchange=false
log4j.appender.amqp.durable=true
log4j.appender.amqp.autoDelete=false
log4j.appender.amqp.contentType=text/plain
log4j.appender.amqp.generateId=false
log4j.appender.amqp.senderPoolSize=2
log4j.appender.amqp.maxSenderRetries=30
log4j.appender.amqp.layout=org.apache.log4j.PatternLayout
log4j.appender.amqp.layout.ConversionPattern=${LOG_PATTERN}
SLF4J只是外墙。什么是您的日志记录实施/桥梁在使用中? Commons Logging? Log4j的?的logback?我想你应该能够为此至少在logback和log4j中定义一些过滤器。 – Fildor
对不起....我们正在使用Spring Boot Log4j(我也更新了这个问题) – KimHansen
用户特定的完整日志是否会分离appender?像每个用户进入不同的文件或类似的东西?我们可以看到您当前的日志配置吗? – Fildor