如果我使用log4j2,如何通过更改应用程序属性中的任何属性来更改春季启动项目(在生产环境中)中的日志级别



我正在开发一个spring引导服务(2.1.7 spring引导版本(,我使用log4j2来建立日志及其模式:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" name="MyService">
<Properties>
<Property name="project.component">${bundle:bootstrap:project.component}</Property>
<Property name="project.version">${bundle:bootstrap:project.version}</Property>
</Properties>
<Appenders>
<Console name="main" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSSZ} ${project.component} ${project.version} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="root" level="INFO">
<AppenderRef ref="main" level="INFO"/>
</Logger>
</Loggers>
</Configuration>

我没有使用log4j2.properties。我的问题是,我只能通过log4j2.xml更改日志级别,我在application.properties中尝试了几个spring-boot属性作为logging.level.root或通过执行器端点,但它们都不起作用。当我在生产环境中,我需要更改日志级别时,我没有办法做到这一点。

有什么建议吗?

我可以使用类似的配置更改日志级别,甚至可以为日志配置一个模式:

# Set everything to be logged to the console
log4j.rootCategory=TRACE, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

还可以设置每个类的日志级别,例如:

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INF
log4j.logger.org.apache.spark.sql.execution.streaming.FileStreamSource=TRACE

最新更新