(六)Spring Boot之日誌配置-logback和log4j2

1、簡介

  • 支持日誌框架Java Util Logging, Log4J2 and Logback默認是使用logback
  • 配置方式:
  1. 默認配置文件配置web

  2. 引用外部配置文件配置

 

2、默認配置文件配置(不建議使用:不夠靈活,對log4j2等不夠友好)

  • # 日誌文件名,好比:roncoo.log,或者是 /var/log/roncoo.log

logging.file=roncoo.log
  • # 日誌級別配置,好比: logging.level.org.springframework=DEBUG

logging.level.*=info

logging.level.org.springframework=DEBUG

 

 

3、 引用外部配置文件

   3.1  logback配置方式:

spring boot默認會加載classpath:logback-spring.xml或者classpath:logback-spring.groovyspring

 

     3.1.1 使用自定義配置文件,配置方式爲:

#主配置文件,配置了這個會優先讀取裏面的屬性覆蓋主配置文件的屬性
spring.profiles.active=dev
server.port=8888


logging.config=classpath:logback-all.xml
  • 注意:不要使用logback這個來命名,不然spring boot將不能徹底實例化
  •  logback-all.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 文件輸出格式 -->
    <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
    <!-- test文件路徑 -->
    <property name="TEST_FILE_PATH" value="c:/opt/roncoo/logs" />
    <!-- pro文件路徑 -->
    <property name="PRO_FILE_PATH" value="/opt/roncoo/logs" />

    <!-- 開發環境 -->
    <springProfile name="dev">
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${PATTERN}</pattern>
            </encoder>
        </appender>
        
        <logger name="com.roncoo.education" level="debug"/>

        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

    <!-- 測試環境 -->
    <springProfile name="test">
        <!-- 天天產生一個文件 -->
        <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 文件路徑 -->
            <file>${TEST_FILE_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件名稱 -->
                <fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 文件最大保存歷史數量 -->
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </appender>
        
        <root level="info">
            <appender-ref ref="TEST-FILE" />
        </root>
    </springProfile>

    <!-- 生產環境 -->
    <springProfile name="prod">
        <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${PRO_FILE_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </appender>
        
        <root level="warn">
            <appender-ref ref="PROD_FILE" />
        </root>
    </springProfile>
</configuration>
  • application.properties配置文件中的spring.profiles.active=dev 必定要配置,不然不起做用。

 

   3.2   log4j配置

  • 去除logback的依賴包,添加log4j2的依賴包

    <!-- 除去logback支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
<!-- 使用log4j2,該包paren標籤中已經依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
  • 在application.properties中添加日誌文件

#主配置文件,配置了這個會優先讀取裏面的屬性覆蓋主配置文件的屬性
spring.profiles.active=dev
server.port=8888
    
logging.config=classpath:log4j2-dev.xml
  • log4j2-dev.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <properties>
        <!-- 文件輸出格式 -->
        <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
    </properties>

    <appenders>
        <Console name="CONSOLE" target="system_out">
            <PatternLayout pattern="${PATTERN}" />
        </Console>
    </appenders>
    
    <loggers>
        <logger name="com.shyroke"  level="debug" />
        <root level="info">
            <appenderref ref="CONSOLE" />
        </root>
    </loggers>

</configuration>
  • 測試環境和生產環境的配置參考logback的配置

 

4、比較

性能比較Log4J2 Logback 都優於 log4j(不推薦使用)app

配置方式:Logback最簡潔spring boot默認推薦使用框架

相關文章
相關標籤/搜索