Log4j

使用log4j

maven依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>

log4j.properties

#dev env [debug] product env [info]
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

Log4j默认的配置文件是log4j.properties,将该文件置于classpath下,容器启动时会初始化Log4j。Log4j把日志级别由低到高依次分为ALL、TRACE、DEBUG、INFO、WARN、ERROR、FITAL和OFF等。其中,级别高的会屏蔽低的信息。如果设置为WARN,则INFO、DEBUG都不会输出。

log4j模板配置

5个重要的概念

Log4j配置中有5个重要的概念:日志记录器(Logger)、根记录器(rootLogger)、类别(category)、输出地(Appender)以及日志格式化器(Layout)。其中,Logger负责记录日志;rootLogger是所有记录器的父亲,任何记录器都可继承rooLogger的配置;category可以设置类别下所有的Logger,类似于java中的包,效果与Logger名字等价;Appender负责输出到什么地方;Layout负责以什么格式输出、输出哪些附加信息(比如:时间、类名、方法名、所在行数等)。在log4j.properties配置中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是Appender,rootLogger直接用log4j.rootLogger配置。

配置模板

# 配置rootLogger为debug级别,输出地:stdout, ROOT,debug_data_appender,info_appender,warn_appender,error_appender,fatal_appender
log4j.rootLogger=debug, stdout, ROOT,debug_appender,info_appender,warn_appender,error_appender,fatal_appender
log4j.appender.logfile.encoding=UTF-8

# ===================================================================================
#设置每种输出的appender

#输出到控制台的appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} (cost:%-4rms) %-5p [%t] %C#%M %L : %m%n

#输出ROOT日志文件的appender
log4j.appender.ROOT=org.apache.log4j.RollingFileAppender
log4j.appender.ROOT.File=e:/log/3rd-components_root.log
log4j.appender.ROOT.MaxFileSize= 20000KB
# Keep one backup file
log4j.appender.ROOT.MaxBackupIndex=1
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.ConversionPattern=%-4r %-5p [%d{yyyy-MM-dd HH\:mm\:ss}]  %m%n

#输出debug以上级别日志文件的appender
#将debug以上级别的日志输出到按大小滚动文件
log4j.appender.debug_appender=org.apache.log4j.RollingFileAppender
log4j.appender.debug_appender.Threshold=debug
#滚动文件名
log4j.appender.debug_appender.File=e:/log/3rd-components_debug.log
#文件达到20000KB就自动改名:debug.log.1,debug.log.2,debug.log.3...直到debug.log.30
log4j.appender.debug_appender.MaxFileSize=20000KB
#最多备件30个文件
log4j.appender.debug_appender.MaxBackupIndex=1
log4j.appender.debug_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.debug_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n

#输出info以上级别日志文件的appender
#将info以上级别的日志输出到按大小滚动文件
log4j.appender.info_appender=org.apache.log4j.RollingFileAppender
log4j.appender.info_appender.Threshold=INFO
#滚动文件名
log4j.appender.info_appender.File=e:/log/3rd-components_info.log
#文件达到20000KB就自动改名:info.log.1,info.log.2,info.log.3...直到info.log.30
log4j.appender.info_appender.MaxFileSize=20000KB
#最多备件30个文件
log4j.appender.info_appender.MaxBackupIndex=1
log4j.appender.info_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.info_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n

#输出warn以上级别日志文件的appender
#将warn以上级别的日志输出到按大小滚动文件
log4j.appender.warn_appender=org.apache.log4j.RollingFileAppender
log4j.appender.warn_appender.append=TRUE
log4j.appender.warn_appender.Threshold=WARN
#滚动文件名
log4j.appender.warn_appender.File=e:/log/3rd-components_warn.log
#文件达到20000KB就自动改名:warn.log.1,warn.log.2,warn.log.3...直到warn.log.30
log4j.appender.warn_appender.MaxFileSize=20000KB
#最多备件30个文件
log4j.appender.warn_appender.MaxBackupIndex=1
log4j.appender.warn_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.warn_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n

#输出error以上级别日志文件的appender
#将error以上级别的日志输出到按大小滚动文件
log4j.appender.error_appender=org.apache.log4j.RollingFileAppender
log4j.appender.error_appender.append=TRUE
log4j.appender.error_appender.Threshold=error
#滚动文件名
log4j.appender.error_appender.File=e:/log/3rd-components_error.log
#文件达到20000KB就自动改名:error.log.1,error.log.2,error.log.3...直到error.log.30
log4j.appender.error_appender.MaxFileSize=20000KB
#最多备件30个文件
log4j.appender.error_appender.MaxBackupIndex=1
log4j.appender.error_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.error_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n

#输出fatal以上级别日志文件的appender
#将fatal以上级别的日志输出到按大小滚动文件
log4j.appender.fatal_appender=org.apache.log4j.RollingFileAppender
log4j.appender.fatal_appender.append=TRUE
log4j.appender.fatal_appender.Threshold=fatal
#滚动文件名
log4j.appender.fatal_appender.File=e:/log/3rd-components_fatal.log
#文件达到20000KB就自动改名:fatal.log.1,fatal.log.2,fatal.log.3...直到fatal.log.30
log4j.appender.fatal_appender.MaxFileSize=100KB
#最多备件30个文件
log4j.appender.fatal_appender.MaxBackupIndex=1
log4j.appender.fatal_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.fatal_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n

# ===================================================================================
#设置相应包的级别
log4j.logger.dev.lpf.obs.HwObsService=INFO

java代码中使用Log4j

Logger就是java代码中的Logger,如: public Logger log=Logger.getLogger(Log4jTest.class)

Logger的名字是Logger.getLogger()方法的参数,如果参数为所在的类,Log4j会取把类名作为Logger的名称,如com.hello.world.Log4jTest。

命名规则:一般以类名作为Logger的名称,名字类似java中的包名,大小写敏感,用点分开且具有继承关系。在log4j.properties中,通过名称来配置Logger的属性。

下面是Log4j的一个简单例子:

package com.hello.world;
import org.apache.log4j.Logger;
public class Log4jTest{
    public static Logger log=Logger.getLogger(Log4jTest.class);
    public static void main(String[] args){
        log.debug("debug信息");
        log.info("info信息");
    }
}

mybatis log4j打印sql语句

打印指定包下(方法)sql语句,便于调试

#dev env [debug] product env [info]
log4j.rootLogger=ERROR, stdout
# Console output...
# 细化到打印某个mapper
# log4j.logger.包名.方法名=TRACE
log4j.logger.net.cybclass.online.dao.VideoMapper.selectById=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

参考

  1. Log4j.properties配置详解
  2. Log4j配置及使用
  3. mybatis log4j打印sql语句

results matching ""

    No results matching ""