zoukankan      html  css  js  c++  java
  • 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 就可以。

     

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

  • 相关阅读:
    Anagram
    HDU 1205 吃糖果(鸽巢原理)
    Codeforces 1243D 0-1 MST(补图的连通图数量)
    Codeforces 1243C Tile Painting(素数)
    Codeforces 1243B2 Character Swap (Hard Version)
    Codeforces 1243B1 Character Swap (Easy Version)
    Codeforces 1243A Maximum Square
    Codeforces 1272E Nearest Opposite Parity(BFS)
    Codeforces 1272D Remove One Element
    Codeforces 1272C Yet Another Broken Keyboard
  • 原文地址:https://www.cnblogs.com/ncepu/p/13694894.html
Copyright © 2011-2022 走看看