日志(slf4j,log4j)

  • 常用的日志框架

Log4j:

Log4j2:

SLF4J:日志输出接口,底层依赖于其它的日志框架

Logback:

Apache Commons Logging:和slf4j类似,是日志输出接口,依赖第三方日志框架

java.util.logging.Logger:JDK自带的日志系统

 

一般项目中使用slf4j作为日志抽象,这样以后系统替换日志框架的话,只需要替换jar,不需要修改代码。

 

 

  • slf4j

slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,

必须搭配其他具体的日志实现方案,比如log4j或者log4j2

  • slf4j+log4j

需要的jar:log4j-xxx.jar  slf4j-api-xxx.jar  slf4j-log4j12-xx.jar(桥接包)

log4j的日志输出级别:

TRACE > DEBUG > INFO > WARN > ERROR > FATAL 

但是注意slf4j没有FATAL等级

 

package com.basic.work.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 
 * Slf4j+log4j  组合
 * 需要的jar:log4j-xxx.jar  slf4j-api-xxx.jar  slf4j-log4j12-xx.jar
 * 
 * slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,
 * 就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,
 * 必须搭配其他具体的日志实现方案,比如log4j或者log4j2
 * 
 * 日志的输出级别:
 * TRACE > DEBUG > INFO > WARN > ERROR > FATAL 
 * 
 * 注意slf4j没有FATAL等级
 * @author chenzhubing
 *
 */
public class Log4j {

    private static final Logger log = LoggerFactory.getLogger(Log4j.class);
    
    public static void main(String[] args) {
        log.info("hekk");
        log.warn("warn");
        log.error("sssss");
        log.trace("trace");
        log.debug("debug");
        
        
        
    }
    
}

 

 

  • log4j.properties
    log4j.rootLogger=TRACE, xxx,yyy,zzz,ccc
    
    #xxx 代表控制台
    log4j.appender.xxx=org.apache.log4j.ConsoleAppender
    #PatternLayout 灵活地指定布局模式   SimpleLayout 日志信息的级别和信息字符串
    log4j.appender.xxx.layout=org.apache.log4j.PatternLayout
    log4j.appender.xxx.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
    
    #yyy 代表文件
    log4j.appender.yyy=org.apache.log4j.FileAppender
    log4j.appender.yyy.layout=org.apache.log4j.PatternLayout
    log4j.appender.yyy.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
    log4j.appender.yyy.File = f:/FileAppender.log
    
    
    #zzz 代表DailyRollingFileAppender  每天创建一个文件
    log4j.appender.zzz=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.zzz.layout=org.apache.log4j.PatternLayout
    log4j.appender.zzz.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
    log4j.appender.zzz.File = f:/log4j-DailyRollingFileAppender.log
    # 默认是true 追加到文件中;false 覆盖原文件
    log4j.appender.zzz.Append = false
    
    #ccc 代表RollingFileAppender   文件到达指定大小,产生一个新的文件
    log4j.appender.ccc=org.apache.log4j.RollingFileAppender 
    log4j.appender.ccc.layout=org.apache.log4j.PatternLayout
    log4j.appender.ccc.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
    log4j.appender.ccc.File = f:/log4j-RollingFileAppender.log
    #指定文件的最大尺寸,超过最大尺寸就会生成一个新的文件【文件尺寸最大对应发生时间最久的,文件尺寸最小的对应最近时间发生的】
    log4j.appender.ccc.MaxFileSize = 50kB
    #最多保留50个最近的发生的文件
    log4j.appender.ccc.MaxBackupIndex = 50

     

上一篇:slf4j-api整合maven 工程日志配置文件


下一篇:基于Hadoop3.1.2集群的Hive3.1.2安装(有不少坑)