1. 程式人生 > >spring boot 日誌log4j2

spring boot 日誌log4j2

最近專案中  用了spring boot   在搞日誌的時候發現  log4j.properties部分生效  一部分沒生效,比如 日誌檔案 死活都沒有

後來發現 pom.xml中 我們用的是 log4j2  

        

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--去掉內建的log-->
            <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-log4j2</artifactId>
        </dependency>

然後沒辦法  於是 只能 用 log4j2了  

 在 spring boot 的  yml中配置:

logging:
  config: classpath:log4j2.xml

然後 在 resources 目錄下 建立  log4j2.xml  ps:和application檔案同一級 。

log4j2.xml檔案配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration status="WARN">
    <!--全域性引數-->
    <Properties>
        <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n</Property>
    </Properties>

    <appenders>
        <Console name="console" target="SYSTEM_OUT">
            <JsonLayout/> <!--使用json格式輸出-->
        </Console>
    </appenders>

    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="console"></AppenderRef>
            <AppenderRef ref="rolling_file"></AppenderRef>
            <AppenderRef ref="file"></AppenderRef>
        </Root>
        <!--只將com.kk.springboot.demo寫到檔案-->
        <!--<Logger name="com.example.demo" level="debug">-->
            <!--<AppenderRef ref="file"></AppenderRef>-->
        <!--</Logger>-->
    </Loggers>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <!--控制檯只輸出level及以上級別的資訊-->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
        </Console>
        <!-- 同一來源的Appender可以定義多個RollingFile,定義按天儲存日誌 -->
        <RollingFile name="rolling_file"
                     fileName="/var/log/tomcat8/cboard.log"
                     filePattern="/var/log/tomcat8/%d{yyyy-MM-dd}.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <!--<SizeBasedTriggeringPolicy size="1 KB"/>-->
            </Policies>
        </RollingFile>
        <File name="file" fileName="/var/log/tomcat8/error.log">
            <!--&lt;!&ndash;控制檯只輸出level及以上級別的資訊(onMatch),其他的直接拒絕(onMismatch)&ndash;&gt;-->
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
        </File>
    </Appenders>
</configuration>

然後發現 pom.xml檔案引入的其他 jar包 由於版本問題 不能使用 log4j2.xml 於是只能把原先的 log4j.properties檔案加上。 

spring boot  日誌搞定。