Java日志

Java日志


1. Log4j2

1.1 Log4j2安全版本

log4j2目前安全版本是2.17.1以上,可以在全局pom.xml中添加log4j2.version配置,使log4j-api与log4j-core等升级到安全版本。生效原理是覆盖spring-boot-dependencies(spring-boot-starter-parent的父级)中的配置
spring-boot-dependencies.xml:

<property>
	<log4j2.version>2.13.3</log4j2.version>
<property>
...
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>${log4j2.version}</version>
    </dependency>

1.2 包冲突解决

  1. log4j-slf4j-impl与log4j-to-slf4j冲突,解决方式是删除log4j-to-slf4j依赖,一般在pom.xml中exclusion掉spring-boot-starter-logging
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

1.3 log4j2引入

  1. 修改pom.xml配置
	<properties>
		<log4j2.version>2.17.1</log4j2.version>
	<properties>
	<dependencies>
		<dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter</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-log4j2</artifactId>
        </dependency>
	</dependencies>    
  1. 在resource目录下添加log4j2.xml

这是一个适用docker容器的简单配置,日志都打印在输出中
log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <properties>
        <property name="LOG_HOME">/data/log/</property>
        <property name="LOG_LEVEL">${sys:LOG4J2-LEVEL:-info}</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="${LOG_LEVEL}">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

一个传统项目的配置,X-B3-TraceId是traceId,需要引入sleuth
pom.xml

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>

log4j2.xml:

<configuration monitorInterval="120">
    <Properties>
        <Property name="logLevel" value="${sys:LOG4J2-LEVEL:-info}" />
        <Property name="logFilePath" value="/home/app/appName" />
        <Property name="logFileName">appName</Property>
        <Property name="bySecond" value="%d{yyyyMMdd}" />
        <Property name="fileSize" value="750MB" />
        <Property name="scheduleCron" value="0 0 0/3 * * ?" />
        <Property name="keepDay" value="30d" />
        <Property name="pattern" value="%-23d{yyyy-MM-dd HH:mm:ss.S} %-5level [%X{X-B3-TraceId}] [%-30.30c{1.}](%M.%L) : %msg%xEx%n" />
    </Properties>

    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%-23d{yyyy-MM-dd HH:mm:ss.S} %-5level [%X{X-B3-TraceId}] [%-30.30c{1.}](%M.%L) : %msg%xEx%n"/>
        </Console>

        <RollingFile name="RollingFileBusiness" fileName="${logFilePath}/${logFileName}.log"
                     append="true"
                     filePattern="${logFilePath}/${bySecond}/${logFileName}-%d{HH}.%i.log.gz">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="${fileSize}"/>
                <CronTriggeringPolicy schedule="${scheduleCron}"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logFilePath}" maxDepth="2">
                    <IfFileName glob="*/${logFileName}-*.log.gz" />
                    <IfLastModified age="${keepDay}" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <RollingFile name="RollingFileError" fileName="${logFilePath}/error.log"
                     append="true"
                     filePattern="${logFilePath}/${bySecond}/error-%d{HH}.%i.log.gz">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="${fileSize}"/>
                <CronTriggeringPolicy schedule="${scheduleCron}"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logFilePath}" maxDepth="2">
                    <IfFileName glob="*/${logFileName}-*.log.gz" />
                    <IfLastModified age="${keepDay}" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    <Loggers>
        <logger name="baidu.xxx" level="${logLevel}" includeLocation="true">
            <appender-ref ref="RollingFileBusiness"/>
            <appender-ref ref="RollingFileError"/>
        </logger>
        <Root level="${logLevel}" includeLocation="true">
            <AppenderRef ref="CONSOLE" />
        </Root>
    </Loggers>
</configuration>
apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-1.2.11.jar, log4j-1.2.12.jar, log4j-1.2.13-sources.jar, log4j-1.2.13.jar, log4j-1.2.13.src.jar, log4j-1.2.14-sources.jar, log4j-1.2.14.jar, log4j-1.2.15-sources.jar, log4j-1.2.15.jar, log4j-1.2.16-sources.jar, log4j-1.2.16.jar, log4j-1.2.5.jar, log4j-1.2.6.jar, log4j-1.2.7.jar, log4j-1.2.8.jar, log4j-1.2.9.jar, log4j-1.2.91.jar, log4j-1.2.jar, log4j-1.2rc1.jar, log4j-1.3alpha-7.jar, log4j-api-2.0.2-javadoc.jar, log4j-api-2.0.2-sources.jar, log4j-api-2.0.2.jar, log4j-boot.jar, log4j-bridge-0.9-sources.jar, log4j-bridge-0.9-tests.jar, log4j-bridge-0.9.4-sources.jar, log4j-bridge-0.9.4-tests.jar, log4j-bridge-0.9.4.jar, log4j-bridge-0.9.6-sources.jar, log4j-bridge-0.9.6-tests.jar, log4j-bridge-0.9.6.jar, log4j-bridge-0.9.jar, log4j-config.jar, log4j-core-2.0.2-javadoc.jar, log4j-core-2.0.2-sources.jar, log4j-core-2.0.2-tests.jar, log4j-core-2.0.2.jar, log4j-core.jar, log4j-ext.jar, log4j-flume-ng-2.0.2-javadoc.jar, log4j-flume-ng-2.0.2-sources.jar, log4j-flume-ng-2.0.2.jar, log4j-java1.1.jar, log4j-jcl-2.0.2-javadoc.jar, log4j-jcl-2.0.2-sources.jar, log4j-jcl-2.0.2.jar, log4j-jmx-gui-2.0.2-javadoc.jar, log4j-jmx-gui-2.0.2-sources.jar, log4j-jmx-gui-2.0.2.jar, log4j-nosql-2.0.2-javadoc.jar, log4j-nosql-2.0.2-sources.jar, log4j-nosql-2.0.2.jar, log4j-over-slf4j-1.5.0.jar, log4j-over-slf4j-1.5.10.jar, log4j-over-slf4j-1.5.3.jar, log4j-over-slf4j-1.5.5.jar, log4j-over-slf4j-1.5.6-sources.jar, log4j-over-slf4j-1.5.6.jar, log4j-over-slf4j-1.5.8-sources.jar, log4j-over-slf4j-1.5.8.jar, log4j-over-slf4j-1.6.1.jar, log4j-slf4j-impl-2.0.2-javadoc.jar, log4j-slf4j-impl-2.0.2-sources.jar, log4j-slf4j-impl-2.0.2.jar, log4j-snmp-appender.jar, log4j-taglib-2.0.2-javadoc.jar, log4j-taglib-2.0.2-sources.jar, log4j-taglib-2.0.2.jar, log4j-to-slf4j-2.0.2-javadoc.jar, log4j-to-slf4j-2.0.2-sources.jar, log4j-to-slf4j-2.0.2.jar, log4j-web-2.0.2-javadoc.jar, log4j-web-2.0.2-sources.jar, log4j-web-2.0.2.jar, log4j-wjw.jar, log4j-xml-1.3alpha-7.jar, log4j.jar, org.apache.log4j_1.2.15.v201005080500.jar, org.apache.log4j_1.2.15.v201012070815.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值