Java 日志组件slf4j+logback使用实例

slf4j

简介

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。

使用步骤

  1. 引入slf4j依赖,这里以maven项目为例
<dependencies>
    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-apiartifactId>
        <version>1.7.22version>
    dependency>
dependencies>
  1. 代码编写记录日志语句,示例如下
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * Created by xuyh at 2017年8月24日 下午4:01:57.
 */
public class Main {
    //定义日志对象
    private static Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String... strings) {
        //级别为debug的日志
        logger.debug("Hello! debug!");
        //级别为info的日志
        logger.info("Hello! info!");
        //级别为warn的日志
        logger.warn("Hello! warn!");
        //级别为error的日志
        logger.error("Hello! error!");
    }
}

以上两步即可记录日志了,不过在运行程序之后会出现如下问题:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

说明光引入slf4j还不够,必须得挑选一个具体的日志组件实现来完成日志的记录,下面介绍一款不错的日志实现:logback

logback

logback简介

Logback是由log4j创始人设计的一个开源日志组件。logback当前分成三个模块:logback-core,logback-classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。

我们这里的实例使用到logback-classic

使用步骤

  1. 引入slf4j以及logback依赖,这里以maven项目为例
<dependencies>

    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-apiartifactId>
        <version>1.7.22version>
    dependency>

    <dependency>
        <groupId>ch.qos.logbackgroupId>
        <artifactId>logback-classicartifactId>
        <version>1.1.6version>
    dependency>

dependencies>
  1. classpath中编写logback的配置文件logback.xml, 以maven项目为例,logback.xml文件放在/src/main/resources/路径中

logback.xml配置实例及注释详解



<configuration scan="true" scanPeriod="60 seconds" debug="false">

    
    <property name="CONTEXT_NAME" value="logback-test" />

    
    <contextName>${CONTEXT_NAME}contextName>

    
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%class|%thread|%method|%line|%msg%n
            pattern>
        encoder>
    appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${logs.dir}/logback-test.logfile>

        
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            
            <FileNamePattern>${logs.dir}/logback-test.%i.logFileNamePattern>
            
            <minIndex>1minIndex>
            
            <maxIndex>1maxIndex>
        rollingPolicy>

        
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            
            <maxFileSize>30MBmaxFileSize>
        triggeringPolicy>

        
        <encoder>
            <charset>UTF-8charset>
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%class|%thread|%method|%line|%msg%n
            Pattern>
        encoder>
    appender>

    
    <root>
        <level value="WARN" />
        <appender-ref ref="stdout" />
        <appender-ref ref="file" />
    root>

    
    <logger name="xuyihao.logback.test" level="DEBUG" additivity="true">logger>

configuration>
  1. 通过以上配置,在程序运行之后,slf4j会加载logback的日志实现,然后logback从类路径中读取logback.xml文件中的日志配置信息,实现日志的记录等功能。

重新运行以上程序,结果如下:

2017-08-24 17:00:22.354|DEBUG|xuyihao.logback.test.Main|main|main|14|Hello! debug!
2017-08-24 17:00:22.354|INFO|xuyihao.logback.test.Main|main|main|15|Hello! info!
2017-08-24 17:00:22.354|WARN|xuyihao.logback.test.Main|main|main|16|Hello! warn!
2017-08-24 17:00:22.354|ERROR|xuyihao.logback.test.Main|main|main|17|Hello! error!

你可能感兴趣的:(Java)