Core Java中的MDC登录

问题描述 投票:0回答:1

虽然在简单的Java(JDK-9)代码中将MDC与log4j一起使用,但我没有为MDC定义的字段获取任何值。以下是我的Java代码和log4j.properties文件。Java代码:

import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
public class Logging {
public static void main(String[] args) {    
    Logger log = Logger.getLogger("Logging.class");  
    String a="BOB";
    try {
    log.info("Hello");
    MDC.put("userid",a);
    log.debug("Texting 1");
    } catch(Exception e) {
        log.error(e.getMessage());
    } finally {
        MDC.remove("userid");
    }    } }

log4j.properties:

log4j.rootLogger=DEBUG,consoleAppender
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %5p %c %x - %m - [%X{userid}]%n

输出:

0    [main]  INFO Logging.class  - Hello - []
4    [main] DEBUG Logging.class  - Texting 1 - []
java log4j java-9 mdc
1个回答
0
投票

在您的代码中,只需尝试更改顺序,然后再尝试。我遇到了同样的问题,我确实更改了订单并尝试过,它对我有用。让我分享我的代码。

公共类MyMDC {

public static void main(String[] args) {
    Logger log = Logger.getLogger(MyMDC.class);  
    String a="BOB";

    try {
        MDC.put("userid",a);
        log.info("Hello");
        log.debug("Texting 1");
        } 
    catch(Exception e) {
            log.error(e.getMessage());
        }
    finally {
            MDC.remove("userid");
        }    
}
© www.soinside.com 2019 - 2024. All rights reserved.