[ 
https://issues.apache.org/jira/browse/LOG4J2-1919?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xianyin Xin closed LOG4J2-1919.
-------------------------------

> Change the appender of a logger will affect other loggers
> ---------------------------------------------------------
>
>                 Key: LOG4J2-1919
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1919
>             Project: Log4j 2
>          Issue Type: Bug
>            Reporter: Xianyin Xin
>
> {code}
>     String logger1Name = Test.class.getName();
>     String logger2Name = "fileLogger";
>     Logger logger1 = LogManager.getLogger(logger1Name);
>     Logger logger2 = LogManager.getLogger(logger2Name);
>     Writer writer = null;
>     try {
>       writer = new PrintWriter(new FileOutputStream("D:/file.log"));
>     } catch (FileNotFoundException e) {
>       e.printStackTrace();
>     }
>     String fileAppender = "myFileAppender";
>     LoggerContext loggerContext = (LoggerContext) 
> LogManager.getContext(false);
>     Configuration conf = loggerContext.getConfiguration();
>     final PatternLayout layout = PatternLayout.createDefaultLayout(conf);
>     final Appender appender = WriterAppender
>         .createAppender(layout, null, writer, fileAppender, false, true);
>     appender.start();
>     // CHANGE ONLY the appender for logger2, but logger1 will be affected 
> also:
>     Map<String, Appender> appenderMap = conf.getAppenders();
>     LoggerConfig config = conf.getLoggerConfig(logger2Name);
>     for (Map.Entry<String, Appender> entry : appenderMap.entrySet()) {
>       config.removeAppender(entry.getKey());
>     }
>     config.addAppender(appender, null, null);
>     logger1.info("hahaha");
>     logger2.info("hehehe");
> {code}
> The output in "D:file.log" reads,
> {quote}
> hahaha
> hehehe
> {quote}
> But the stdout appender for logger1 ouputs nothing.
> I don't know if it is the design. However, the LoggerConfig returned by 
> {{conf.getLoggerConfig(logger_name)}} is in fact the {{PrivateConfig}} of 
> logger2, which can be seen from {{Logger.removeAppender()}} and 
> {{Logger.addAppender()}}.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to