首页 > 解决方案 > 如何使用 java 类而不是 xml 文件配置 logback 设置

问题描述

我是 Log 主题的新手,并尝试使用 logback 在我的应用程序中记录必要的信息。我在互联网上发现我可以使用这样的 xml 文件配置日志:

<springProfile name="production, staging">
        <appender name="debugLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>%d %-5level %logger{36} - %msg %n</pattern>
            </encoder>
            <file>logs/service-debug.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                <fileNamePattern>logs/service-debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <minIndex>1</minIndex>
                <maxIndex>3</maxIndex>
            </rollingPolicy>

            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <maxFileSize>100MB</maxFileSize>
            </triggeringPolicy>

            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>DEBUG</level>
            </filter>
        </appender>

        <appender name="errorLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>%d %-5level %logger{36} - %msg %n</pattern>
            </encoder>
            <file>logs/service-error.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                <fileNamePattern>logs/service-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <minIndex>1</minIndex>
                <maxIndex>3</maxIndex>
            </rollingPolicy>

            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <maxFileSize>10MB</maxFileSize>
            </triggeringPolicy>

            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
        </appender>

        <root level="DEBUG">
            <appender-ref ref="debugLogAppender" />
            <appender-ref ref="errorLogAppender" />
        </root>
</springProfile>

我想在两个单独的文件中记录 DEBUG 级别和 ERROR 级别。我已经使用此配置进行了测试,并且成功了!

但我的问题是,我可以使用 Java 类而不是像这样的 xml 文件进行相同的配置。因为我的想法是我想从外部控制日志配置,也可以通过向我的应用程序发送 REST 服务来更改日志设置,例如:更改日志文件的名称,或更改日志模式......

那我怎么能用纯Java类呢?

非常感谢您的先进!

标签: javalogbackslf4jspring-logback

解决方案


我建议阅读有关 logback 的内容,如果我没记错的话,它可以让您通过更改 xml 文件(自动重新加载)或通过 web 挂钩来修改日志记录配置。


推荐阅读