Log4j2 + SLF4J開箱即用的配置

網上有很多關於Log4j2和SLF4J的文章,我就不再贅述了,直接上我在項目中的使用的log4j2.xml配置文件,也算是一個總結記錄吧,以後隨時補充進來。

Maven dependency
<dependencies>
   <!-- log4j2核心包 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.0</version>
    </dependency>
    <!-- 和slf4j的橋接包,裏面含有slf4j核心包:slf4j-api -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.11.0</version>
    </dependency>

    <!-- 使用slf4j適配spring中的common-logging -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.25</version>
   </dependency>

</dependencies>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="LOG_PATH">/data/log/project-name</Property>
        <Property name="FILE_NAME">app</Property>
        <Property name="ERROR_FILE_NAME">error</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - [%X{requestId}] %msg%n"/>
        </Console>

        <!--所有日誌 -->
        <RollingRandomAccessFile name="RollingFile" fileName="${LOG_PATH}/${FILE_NAME}.log"
                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
            <!-- 日誌級別過濾 -->
            <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 日誌輸出的格式 --> 
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-5level %logger{36} - [%X{requestId}] %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <!-- 日誌文件超過1024M生成一個新的日誌文件 -->
                <SizeBasedTriggeringPolicy size="1024 MB" />
            </Policies>
            <!--最多保存的文件個數 -->
            <DefaultRolloverStrategy max="30"/>
        </RollingRandomAccessFile>

        <!--錯誤日誌 -->
        <RollingRandomAccessFile name="ErrorFile" fileName="${LOG_PATH}/${ERROR_FILE_NAME}.log"
                                 filePattern="${LOG_PATH}/$${date:yyyy-MM}/${ERROR_FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-5level %logger{36} - [%X{requestId}] %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="1024 MB" />
            </Policies>
            <!--最多保存的文件個數 -->
            <DefaultRolloverStrategy max="30"/>
        </RollingRandomAccessFile>
        <Async name="Async">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="ErrorFile" />
        </Async>
    </Appenders>

    <Loggers>
        <!-- 這個logger會打印com.jiaobuchong包下的DEBUG日誌 --> 
        <Logger name="com.jiaobuchong" level="DEBUG" additivity="false">
            <AppenderRef ref="Async" />
        </Logger>

        <!--默認打印INFO級別的日誌 -->
        <Root level="INFO">
            <AppenderRef ref="Async"/>
        </Root>
    </Loggers>
</Configuration>

參考:
這篇總結得很好,涵蓋log4j2常用的配置項講解:log4j2 入門教程
詳解log4j2(上) - 從基礎到實戰
使用Slf4j集成Log4j2構建項目日誌系統的完美解決方案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章