Log4j 快速上手教程

示例:log4j.properties文件

#定义LOG输出级别
log4j.rootLogger = DEBUG,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%c] - %m%n

#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所有日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

解析

log4j.rootLogger = [ level ] , appender1, appender..n

  • level
    日志记录的优先级,从高到低分别为 OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
    若指定了某一级别,则应用程序中的所有低于该级别的日志信息不会被打印出来。
  • appender
    Apache Log4j 提供的 Appender 对象主要负责将日志信息打印至不同目的地,比如控制台、文件、网络套接字、NT 事件日志等。

例如:log4j.rootLogger = WARN, Console, File

  • 应用程序中所有INFO、DEBUG级别的信息都不会打印出来
  • 定义了两个Appender对象,分别为Console和File

定义了对象,自然需要配置对象的具体属性
一般来说,配置格式为

log4j.appender.[ object ] = org.apache.log4j.[ class ]
log4j.appender.[ object ].[ attribute ] = [ value ]
...
log4j.appender.[ object ].[ attribute ] = [ value ]
  • object 前面rootLogger定义的Appender对象,如Console,File
  • class Log4j提供的Appender有多种,一般会用到以下几种:
CLASS 说明
ConsoleAppender 控制台
FileAppender 文件
DailyRollingFileAppender 每天产生一个日志文件
RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
WriterAppender 将日志信息以流格式发送到任意指定的地方
  • attribute 每个 Appender 对象都有不同的属性,这些属性决定了该对象的行为。常用的有:
属性 描述 value
layout 可以灵活地指定日志输出格式 org.apache.log4j.PatternLayout、...
target 目的地可以是控制台、文件,或依赖于 appender 的对象 System.out、...
threshold 定义一个阀值级别,Appender会输出所有级别大于或等于阀值级别的日志 AllDEBUG、...

注:所有的Appender都可通过设置Threshold来设置本Appender的启用级别


关于PatternLayout

PatternLayout 是一个简单的 Layout 对象,可通过配置文件更改其属性conversionPatter以设置转换模式。
默认为%r [%t] %p %c %x - %m%n

字符含义,详见链接


测试

log4j.properties

#定义LOG输出级别
log4j.rootLogger = DEBUG,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%c] - %m%n

#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = WARN
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

测试代码

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

public class Log4jTest {
    private static Logger logger = LoggerFactory.getLogger(Log4jTest.class);

    public static void main(String args[]) {
        logger.error("Error Message");
        logger.warn("Warn Message");
        logger.info("Info Message");
        logger.debug("Debug Message");
    }
}

测试结果

Console.png

File.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 10,480评论 1 13
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 10,434评论 0 6
  • 一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layo...
    默默守护阅读 5,883评论 2 8
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan阅读 8,552评论 0 0
  • log4j 1.1 简介 Log4j是一个由Java编写可靠、灵活的日志框架,是Apache旗下的一个开源项目;现...
    贾博岩阅读 12,403评论 1 32