logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pietro Galassi <pietro.gala...@gmail.com>
Subject Configure Mixed Mode (xml + programmatic)
Date Thu, 24 Oct 2019 10:25:43 GMT
Hi all,

i need to configure log4j2 both with XML (that should log on console) and
with some programmatic appenders that creates a log for each time it's
created.

This is the simpe xml configuration:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} -
%msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error" additivity="false">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

while for creating and removing the appenders and log configs on the fly
i'm using:

 public void addAppender(String path, String logFileName) {
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
Layout<? extends Serializable> layout = PatternLayout.newBuilder()
.withPattern("%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} -
%msg%n").build();
appenderName = "com" + System.currentTimeMillis();
appender = FileAppender.newBuilder().withName(appenderName)
.withFileName(path + File.separator + logFileName +
".log").withAppend(false).withImmediateFlush(false)
.withLayout(layout).build();
appender.start();
config.addAppender(appender);

AppenderRef ref = AppenderRef.createAppenderRef("File", null, null);
AppenderRef[] refs = new AppenderRef[] { ref };
LoggerConfig loggerConfig = LoggerConfig.createLogger(false, Level.DEBUG,
logFileName, "true", refs, null, config, null);
loggerConfig.addAppender(appender, null, null);
config.addLogger("com", loggerConfig);
ctx.updateLoggers();
}

public void removeAppender() {
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
ctx.getLogger("com").removeAppender(appender);
ctx.updateLoggers();
ctx.reconfigure();
}


Now every time i call the addAppender a new appender is created and a new
file is created with the related logs. But i got no logs in the console.

How to solve this ?

Regards,
Pierpaolo

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message