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

 

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

 

 

posted @ 2019-04-29 15:47  glpa  阅读(151)  评论(0编辑  收藏  举报