• java日志框架 (二) 日志框架使用 之 SLF4J + logback


    外文博客写的Demo非常不错!值的一看

    https://www.javacodegeeks.com/2012/04/using-slf4j-with-logback-tutorial.html   

          官方网站

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

    logback下载地址:https://logback.qos.ch/download.html

     

     

    文件日志、数据库日志!使用

    第一步:在maven项目中,在  pom.xml 添加 slf4j-ap、logback-classic、lombak 依赖。

    因为写的是Demo只需要三个依赖即可,另外socpe去除,使用默认。

    <!--slf4j-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    
    
    
    <!--logback-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.4</version>
        <scope>provided</scope>
    </dependency>

     

    如果有下面的报错信息,等。相似信息。请打开日志信息中的链接,阅读,对应自己解决。

    SLF4J: No SLF4J providers were found.

    SLF4J: Defaulting to no-operation (NOP) logger implementation

    SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.

    官网,解析:https://www.slf4j.org/codes.html

    Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

     

     

    第二步:Logback配置文件,常用的默认方法:classpath中创建logback.xml文件。[即Resources目录下]

    官方对配置文件加载的解说: https://logback.qos.ch/manual/configuration.html

    logback-test.xml  >  logback.groovy  >  logback.xml  > 没有配置文件时》

    automatically using the BasicConfigurator which will cause logging output to be directed to the console.

    官方提供:  log4j.properties to logback.xml Translator               https://logback.qos.ch/translator/       

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="true" scan="true" scanPeriod="60 seconds">
        <property name="LOG_DIR" value="logs"/>
        <property name="APP_DIR" value="springmvc"/>
    
    
        <!-- 1. 控制台输出 -->
        <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <!--2. 按照每天生成日志文件-->
        <appender name="A1" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <File>${LOG_DIR}/${APP_DIR}/log_test.log</File>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <FileNamePattern>${LOG_PATH}/${APP_DIR}/bak/log-test-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
                <maxHistory>10</maxHistory>
                <MaxFileSize>50MB</MaxFileSize>
            </rollingPolicy>
            <append>true</append>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <appender name="A2" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <File>${LOG_DIR}/${APP_DIR}/log_dao.log</File>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <FileNamePattern>${LOG_PATH}/${APP_DIR}/bak/log-dao-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
                <maxHistory>10</maxHistory>
                <MaxFileSize>50MB</MaxFileSize>
            </rollingPolicy>
            <append>true</append>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
    
        <logger name="com.evhtech.test" additivity="false" level="INFO">
            <appender-ref ref="A1"/>
        </logger>
        <logger name="com.evhtech.dao" additivity="false" level="INFO">
            <appender-ref ref="A2"/>
        </logger>
    
        <logger name="org.apache.catalina.startup.VersionLoggerListener" level="INFO"/>
        <logger name="org.apache.coyote" level="INFO"/>
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.springframework.http" level="INFO"/>
        <logger name="org.springframework.web" level="INFO"/>
        <logger name="org.junit" level="INFO"/>
    
        <!-- 日志输出级别 -->
        <root level="debug">
            <appender-ref ref="stdout"/>
        </root>
    
    </configuration>
    

     

    第三步:IDEA 确定要安装Lombok插件。

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

    第四步:创建将使用slf4j的类。在com.lordofthejars.bar上创建名为BarComponent的第一个类:

    一个类:

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

     

    第六步:生成的日志文件,在项目目录下。

     

     

  • 相关阅读:
    java 对象的创建
    可重入锁
    guava multimap介绍
    Tomcat运行机制
    GC垃圾收集算法
    GC判断哪些内存需要回收
    JVM类加载器以及双亲委派模型
    深入分析ConcurrentHashMap
    BeanCopier类
    Quartz技术原理
  • 原文地址:https://www.cnblogs.com/ncepu/p/13694895.html
Copyright © 2020-2023  润新知