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

时间:2019-11-19 11:03:57

标签: spring spring-boot log4j2

我正在开发spring boot服务(2.1.7 spring boot版本),在这里我使用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或通过执行器端点,但是它们没有用。当我处于生产环境中并且需要更改日志级别时,我无法执行此操作。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

# 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