【问题标题】:How to set different logging levels for console-writing and file-writing in java如何在java中为控制台写入和文件写入设置不同的日志记录级别
【发布时间】:2018-12-23 06:13:59
【问题描述】:

我正在开发一个 Spring Boot 应用程序。我需要将 WARN 及以上级别的日志写入文件,而 INFO 及以上级别的日志将显示在控制台中。如何在 application.properties 文件中进行配置?

如果 logback.xml 是必需的(或 log4j 的类似文件),你能帮我使用它们中的任何一个来配置它吗??

【问题讨论】:

  • 您只需要定义您的两个附加程序,然后为每个附加程序设置您想要的日志级别。您将在文档中找到创建 logback.xml 或 log4j 配置文件所需的一切。

标签: spring-boot logging log4j logback


【解决方案1】:

这是一个示例 logback.xml,用于将每个级别的日志写入一个唯一的文件,并将所有上述信息写入控制台。

我想事情是不言自明的。如果你不这么认为,你我的朋友应该花点时间看官方文档。

希望对您有所帮助。干杯。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="DEV_HOME" value="logs" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>



    <appender name="FILE-ERROR"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/error.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${DEV_HOME}/archived/error.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

    </appender>



    <appender name="FILE-INFO"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/info.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${DEV_HOME}/archived/info.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

    </appender>



    <appender name="FILE-FATAL"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/fatal.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>FATAL</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${DEV_HOME}/archived/fatal.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

    </appender>


    <appender name="FILE-WARN"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/warn.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${DEV_HOME}/archived/warn.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

    </appender>


    <!-- Send logs to both console and file audit -->

    <logger name="com.vaidiksanatansewa.guruji" level="fatal"
            additivity="false">

        <appender-ref ref="FILE-FATAL" />
    </logger>


    <logger name="com.vaidiksanatansewa.guruji" level="error"
            additivity="false">

        <appender-ref ref="FILE-ERROR" />
    </logger>


    <logger name="com.vaidiksanatansewa.guruji" level="warn"
            additivity="false">

        <appender-ref ref="FILE-WARN" />
    </logger>


    <logger name="com.vaidiksanatansewa.guruji" level="info"
            additivity="false">

        <appender-ref ref="FILE-INFO" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>




</configuration>

【讨论】:

  • 谢谢。我很着急,所以我想要一些直接的帮助,而不是浏览所有这些文件。这完全符合我的要求。但是我一直在研究其中一个 cmets 之后的文件,我想这些东西现在对我来说很有意义。干杯
猜你喜欢
  • 2011-02-09
  • 2018-12-19
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 2013-08-29
  • 1970-01-01
相关资源
最近更新 更多