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

     

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

     

     

  • 相关阅读:
    D. Constructing the Array
    B. Navigation System
    B. Dreamoon Likes Sequences
    A. Linova and Kingdom
    G. Special Permutation
    B. Xenia and Colorful Gems
    Firetrucks Are Red
    java getInstance()的使用
    java 静态代理和动态代理
    java 类加载机制和反射机制
  • 原文地址:https://www.cnblogs.com/ncepu/p/13694895.html
Copyright © 2011-2022 走看看