美文网首页
Log4j 快速上手教程

Log4j 快速上手教程

作者: Funk_V | 来源:发表于2018-03-18 00:53 被阅读0次

示例: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

相关文章

网友评论

      本文标题:Log4j 快速上手教程

      本文链接:https://www.haomeiwen.com/subject/yknjqftx.html