Logback配置与使用,网上资料自己测试整理

来源:互联网 发布:翻墙违法吗 知乎 编辑:程序博客网 时间:2024/05/16 07:42

Logback配置与使用

Logback 分为三个模块:CoreClassic 和 AccessCore模块是其他两个模块的基础。 Classic模块扩展了core模块。 Classic模块相当于log4j的显著改进版。Logback-classic 直接实现了 SLF4J API

要引入logback,由于Logback-classic依赖slf4j-api.jarlogback-core.jar,所以要把slf4j-api.jarlogback-core.jarlogback-classic.jar,添加到要引入Logbac日志管理的项目的class path中。

添加Maven依赖

<dependency>  

    <groupId>org.slf4j</groupId>  

    <artifactId>slf4j-api</artifactId>  

    <version>1.6.0</version>  

    <type>jar</type>  

    <scope>compile</scope>  

</dependency>  

<dependency>  

    <groupId>ch.qos.logback</groupId>  

    <artifactId>logback-core</artifactId>  

    <version>0.9.28</version>  

    <type>jar</type>  

</dependency>  

<dependency>  

    <groupId>ch.qos.logback</groupId>  

    <artifactId>logback-classic</artifactId>  

    <version>0.9.28</version>  

    <type>jar</type>  

</dependency>  

 

Logback.xml配置文件

<?xml version="1.0" encoding="UTF-8"?> 

<configuration>

<!--本机环境配置-->

<property name="file_path_name" value="C:\\bj_stat.log" />

<!--控制台打印-->

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">   

    <filter class="ch.qos.logback.classic.filter.LevelFilter">   <!--日志等级拦截器-->

         <level>DEBUG</level>   <!--只输出INFO级别的日志-->

            <onMatch>ACCEPT</onMatch>    <!--符合条件记录-->

            <onMismatch>DENY</onMismatch>   <!--不符合条件退出-->

        </filter>  

<encoder charset="UTF-8"> 

<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 

</encoder> 

</appender>

    <!--bj统计日志文件-->

    <appender name="FILETRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">

     <filter class="ch.qos.logback.classic.filter.LevelFilter">   <!--日志等级拦截器-->

         <level>TRACE</level>   <!--只记录TRACE级别的日志-->

            <onMatch>ACCEPT</onMatch>    <!--符合条件记录-->

            <onMismatch>DENY</onMismatch>   <!--不符合条件退出-->

        </filter>   

<file>${file_path_name}</file>

<encoder charset="UTF-8">

<pattern>%msg%n</pattern>

</encoder>

<!--按照时间切分日志文件-->

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<FileNamePattern>${file_path_name}.%d{yyyy-MM-dd}</FileNamePattern>

</rollingPolicy>

</appender>  

 

<!--TRACE日志记录的入口,同时打印和写文件-->

<root level="TRACE"> 

    <appender-ref ref="STDOUT" /> 

<appender-ref ref="FILETRACE" /> 

</root>

</configuration>

 

测试类

import org.slf4j.Logger;  

import org.slf4j.LoggerFactory;  

  

public class LogbackDemo {  

    private static Logger log = LoggerFactory.getLogger(LogbackDemo.class);  

    public static void main(String[] args) {  

        log.trace("======trace");  

        log.debug("======debug");  

        log.info("======info");  

        log.warn("======warn");  

        log.error("======error");  

    }  

}  

logback.xml文件放在根目录下,系统会自动读取的。

配置文件中设置的debug级别,所以只会输出debug

同时因为有trace,会在C盘生成一个文件。里面记录trace信息。

如果将配置文件放在一个目录下,系统就找不到,那么上面的程序就会全部输出。

该规则是 logback 的核心。级别排序为: TRACE < DEBUG < INFO < WARN < ERROR

如果 logger没有被分配级别,那么它将从有被分配级别的最近的祖先那里继承级别。logger 默认级别是 DEBUG,所以这里没有打印trace

默认配置

Logback默认配置的采用的步骤

1. 尝试在 classpath 下查找文件 logback-test.xml

2. 如果文件不存在,则查找文件 logback.xml

3. 如果两个文件都不存在,logback  Bas icConfigurator 自动对自己进行配置,这会导致记录输出到控制台。

 

使用配置文件目录

 

Logback 依赖JoranJoran是 logback-core 的一部分,是个配置类库。Logback 的默认配置机制是调用JoranConfiguratorclasspath上的默认配置文件进行处理。 不管出于什么理由,如果你想重新实现 logback 的默认配置机制的话,你可以直接调用 JoranConfigurator

 

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

import ch.qos.logback.classic.LoggerContext;

import ch.qos.logback.classic.joran.JoranConfigurator;

 

public class Test {

private static Logger log = LoggerFactory.getLogger(Test.class);

public static void main(String[] args) {

LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();

JoranConfigurator configurator = new JoranConfigurator();

configurator.setContext(context);

context.reset();

try{

configurator.doConfigure("src/conf/logback.xml");  //配置文件路径

}

catch(Exception e){

e.printStackTrace();

}

log.trace("======trace");  

        log.debug("======debug");  

        log.info("======info");  

        log.warn("======warn");  

        log.error("======error"); 

}

}

配置文件为INFO级别输出,同时trace写文件。

0 0
原创粉丝点击