java日志框架 (三) 日志框架使用 之 SLF4J + Log4j2

这里的log4j2,是log4j 的升级版本。

apache log4j 官网也进行了解释,log4j  开始弃用,推荐使用   log4j2  。

----------------------分隔符-----------

下面的三个网站,有必要去细看一小时,因为真的很重要。

slf4j 下载地址:https://www.slf4j.org/download.html

log4j2 下载地址:http://logging.apache.org/log4j/2.x/index.html

Log4j to SLF4J Adapter: http://logging.apache.org/log4j/2.x/log4j-to-slf4j/index.html

使用步骤详解!

第一步:pom.xml

这里的依赖,分四块,slf4j-api      log4j - slf4j -impl      log4j- XX      lombok

slf4j - API是一种服务一种API接口,log4j -  slf4j - impl  进行实现关联,log4j-XX 是具体的日志实现类,lombak做注解用的。

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.25</version>
</dependency>

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-slf4j-impl</artifactId>
	<version>2.11.1</version>
</dependency>

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.11.1</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.11.1</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-web</artifactId>
	<version>2.11.1</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
</dependency>

第二步:log4j2.xml 配置文件。

两个重要的参考来源

http://logging.apache.org/log4j/2.x/articles.html

https://howtodoinjava.com/log4j2/log4j-2-xml-configuration-example/

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <!-- Logging Properties -->
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS Z} %p %l %msg %n</Property>
        <Property name="APP_LOG_ROOT">c:/temp</Property>
    </Properties>
    <Appenders>
        <!-- Console Appender -->
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>

        <!-- File Appenders on need basis -->
        <RollingFile name="frameworkLog" fileName="${APP_LOG_ROOT}/app-framework.log"
                     filePattern="${APP_LOG_ROOT}/app-framework-%d{yyyy-MM-dd}-%i.log">
            <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>

        <RollingFile name="debugLog" fileName="${APP_LOG_ROOT}/app-debug.log"
                     filePattern="${APP_LOG_ROOT}/app-debug-%d{yyyy-MM-dd}-%i.log">
            <LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>

        <RollingFile name="infoLog" fileName="${APP_LOG_ROOT}/app-info.log"
                     filePattern="${APP_LOG_ROOT}/app-info-%d{yyyy-MM-dd}-%i.log" >
            <LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>

        <RollingFile name="errorLog" fileName="${APP_LOG_ROOT}/app-error.log"
                     filePattern="${APP_LOG_ROOT}/app-error-%d{yyyy-MM-dd}-%i.log" >
            <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>

        <RollingFile name="perfLog" fileName="${APP_LOG_ROOT}/app-perf.log"
                     filePattern="${APP_LOG_ROOT}/app-perf-%d{yyyy-MM-dd}-%i.log" >
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="1"/>
        </RollingFile>

        <RollingFile name="traceLog" fileName="${APP_LOG_ROOT}/app-trace.log"
                     filePattern="${APP_LOG_ROOT}/app-trace-%d{yyyy-MM-dd}-%i.log" >
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="1"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!-- 3rdparty Loggers -->
        <logger name="org.springframework.core" level="info">
        </logger>
        <logger name="org.springframework.beans" level="info">
        </logger>
        <logger name="org.springframework.context" level="info">
        </logger>
        <logger name="org.springframework.web" level="info">
        </logger>

        <Logger name="com.evhtech" additivity="false" level="trace">
            <AppenderRef ref="traceLog" />
            <AppenderRef ref="Console" />
        </Logger>

        <Logger name="com.evhtech" additivity="false" level="debug">
            <AppenderRef ref="debugLog" />
            <AppenderRef ref="infoLog"  />
            <AppenderRef ref="errorLog" />
            <AppenderRef ref="Console"  />
        </Logger>

        <Logger name="com.evhtech" additivity="false" level="info">
            <AppenderRef ref="perfLog" />
            <AppenderRef ref="Console"/>
        </Logger>

        <Root level="warn">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

第三步:创建将使用slf4j的类。

在编写这些类时,@Slf4j 注解, 如果不能用。记得需要安装lombok插件。

按 Ctrl + Alt + S 键,在弹出的窗口 

一个类

package com.evhtech.dao;
package com.evhtech.dao;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Dao {
    public static void main(String[] args) {
        log.trace("Dao log --->TRACE");
        log.debug("Dao log --->EBUG");
        log.info("Dao log --->INFO");
        log.warn("Dao log --->WARN");
        log.error("Dao log --->ERROR");
    }
}

二个类

package com.evhtech.test;
package com.evhtech.test;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Test {
    public static void main(String[] args) {
        log.trace("Test log --->TRACE");
        log.debug("Test log --->EBUG");
        log.info("Test log --->INFO");
        log.warn("Test log --->WARN");
        log.error("Test log --->ERROR");
    }
}

 

第四步:console日志输出。

新建的二个类。都是用来测试的。是main函数,分析 run 就可以。

 

第五步:生成的日志文件。

原文地址:https://www.cnblogs.com/ncepu/p/13694894.html