1. 程式人生 > 其它 >SpringBoot專案使用log4j2

SpringBoot專案使用log4j2

技術標籤:SpringBootloglog4j2整合log4j專案使用log4jlog4j log4j2專案整合log4j2

pom.xml新增依賴

		<!-- springboot預設是用logback的日誌框架的,所以需要排除logback,不然會出現jar依賴衝突的報錯 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<exclusion> <!-- exclude掉spring-boot的預設log配置 -->
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- log4j日誌 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>
		<!-- 有其他jar依賴log4j -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-1.2-api</artifactId>
		</dependency>
		<dependency>
			<groupId>com.lmax</groupId>
			<artifactId>disruptor</artifactId>
			<version>3.3.6</version>
		</dependency>

application.properties新增配置:

#Log4j2
logging.config=classpath:log4j2.xml

src/main/resources新增XML檔案:log4j2.xml

注意:

需要將xml中 "XXX" 進行更改,如:"logs/XXX-info.log" 建議改為 "logs/當前專案名-info.log"共計12處

需要將 "com.test.dao" 更改為自己的專案中的dao介面所在包名共計1處

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

<configuration status="debug">

    <appenders>
        <!--這個輸出控制檯的配置-->
        <Console name="STDOUT">
            <!--控制檯只輸出level及以上級別的資訊(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
            <!-- 輸出日誌的格式-->
            <!--<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] - %msg%n" charset="UTF-8"/>-->
            <!--上面的日誌格式太長,一屏看不了要拉動滾動條,精簡一下-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{50}.%M:%L] - %msg%n" charset="UTF-8"/>
        </Console>

        <!--sql專用輸出-->
        <Console name="STDOUT2">
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{50}:%L] - %msg%n" charset="UTF-8"/>
        </Console>

        <RollingRandomAccessFile name="FILE-INFO" fileName="logs/XXX-info.log"
                filePattern="logs/XXX-info.%d{yyyy-MM-dd-HH}.log">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" />
            <TimeBasedTriggeringPolicy  interval="1" />
            <DefaultRolloverStrategy max="1"  >
                <Delete basePath="logs" maxDepth="2">
                    <IfFileName glob="*XXX-info.*.log" />
                    <IfLastModified age="1d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="FILE-DEBUG" fileName="logs/XXX-debug.log"
                filePattern="logs/XXX-debug.%d{yyyy-MM-dd-HH}.log">
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}  [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" />
            <TimeBasedTriggeringPolicy  interval="1" />
            <DefaultRolloverStrategy max="1"  >
                <Delete basePath="logs" maxDepth="2">
                    <IfFileName glob="*XXX-debug.*.log" />
                    <IfLastModified age="1d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="FILE-WARN" fileName="logs/XXX-warn.log"
                filePattern="logs/XXX-warn.%d{yyyy-MM-dd-HH}.log">
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" />
            <TimeBasedTriggeringPolicy  interval="1" />
            <DefaultRolloverStrategy max="1"  >
                <Delete basePath="logs" maxDepth="2">
                    <IfFileName glob="*XXX-warn.*.log" />
                    <IfLastModified age="1d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="FILE-ERROR" fileName="logs/XXX-error.log"
                filePattern="logs/XXX-error.%d{yyyy-MM-dd-HH}.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" />
            <TimeBasedTriggeringPolicy  interval="1" />
            <DefaultRolloverStrategy max="1"  >
                <Delete basePath="logs" maxDepth="2">
                    <IfFileName glob="*XXX-error.*.log" />
                    <IfLastModified age="1d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </appenders>

    <loggers>
        <!-- 將業務dao介面填寫進去,並用控制檯輸出即可 -->
        <AsyncLogger name="com.test.dao" level="debug" additivity="false">
            <AppenderRef ref="STDOUT2"/>
        </AsyncLogger>

        <!--includeLocation="true" :打印出行號-->
        <AsyncRoot level="debug" includeLocation="true">
            <!--<AppenderRef ref="FILE-INFO" />
            <AppenderRef ref="FILE-WARN" />
            <AppenderRef ref="FILE-ERROR" />-->
            <AppenderRef ref="STDOUT" />
        </AsyncRoot>
    </loggers>

</configuration>