Spring启动和log4j:在运行时为log4j更改日志记录级别和日志文件

时间:2015-11-13 07:48:24

标签: spring-boot log4j

我的应用程序使用了spring boot和log4j。 要在运行时更改日志级别,我使用了以下log4j.properties:

    # Root logger option
log4j.rootLogger= ${LOGGER.LEVEL}, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.stdout.Threshold=ERROR

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${log.file.path}//${project.artifactId}.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file.Threshold= ${LOGGER.LEVEL}

要在运行时更改日志记录级别,我使用了外部application.properties,其中我更改了LOGGER.LEVEL的值。但不幸的是,没有结果。

你能告诉我,我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为您不需要额外的属性文件。如果要在运行时更改日志级别,只需以编程方式执行此操作。

Logger logger = Logger.getLogger(mylogger);
logger.setLevel(Level.INFO);

使用Level,您可以根据需要保存当前日志级别:

Level previousLevel = logger.getLevel();

编辑1:

尝试这样的配置:

log4j.rootLogger=INFO(or what you want), stdout

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.stdout.Threshold=ERROR(or what you want)

# Redirect log messages to a log file, support file rolling.
log4j.logger.mylogger=${LOGGER.LEVEL},file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${log.file.path}//${project.artifactId}.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
#log4j.appender.file.Threshold= ${LOGGER.LEVEL}

您必须在代码中使用mylogger