• 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 就可以。

     

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

  • 相关阅读:
    monitor system
    monitor disk
    manage account
    windows
    backup daily
    shell 脚本编程概述
    OGNL表达式
    Struts2各个功能详解(2)-输入校验和拦截器
    struts2各个功能详解(1)----参数自动封装和类型自动转换
    Struts2源码解析2
  • 原文地址:https://www.cnblogs.com/ncepu/p/13694894.html
Copyright © 2020-2023  润新知