在生產環境中,我只記錄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