Log4J的使用

Log4J的使用

log4j是用来记录日志的
软件的运行过程离不开日志,日志主要用来记录系统运行过程中的一些重要的操作信息,便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者根据日志找到发生故障的原因。

日志根据记录内容的不同,主要分为3类:

1.  SQL日志:记录系统执行的SQL语句。
2.  异常日志:记录系统运行过程中发生的异常事件。
3.  业务日志:记录系统运行过程,如用户登录,操作记录。

log4j具有7种级别

  • DEBUG Level: 指出细粒度信息事件对调试应用程序是非常有帮助的,就是输出debug的信息.
  • INFO level: 表明消息在粗粒度级别上突出强调应用程序的运行过程,就是输出提示信息.
  • WARN level: 表明会出现潜在错误的情形,就是显示警告信息.
  • ERROR level: 指出虽然发生错误事件,但仍然不影响系统的继续运行.就是显示错误信息.
  • FATAL level: 指出每个严重的错误事件将会导致应用程序的退出.
  • ALL level: 是最低等级的,用于打开所有日志记录.
  • OFF level: 是最高等级的,用于关闭所有日志记录.

日志记录器(Logger)的行为是分等级的:
优先级从高到低分别是OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。

log4j.properties 的配置

首先要创建 log4j.properties 文件

log4j.rootLogger 配置语法为:

log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
  • level:是最小优先级配置,小于高级别的日志信息不会被打印出来。
  • appenderName:是指定日志输出到哪些地方,可以同时指定多个输出目的地。

例如:

log4j.rootLogger = info , A1,B2,C3 

配置了3个输出地方,这个名字可以任意,但必须与我们后面进行设置的名字相对应。

log4j.appender 相关,表示:
日志输出目的地,负责日志的输出 (输出到什么 地方)
例如:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=L.log

将日志输出到控制台和L.log文件中。

Appender可以控制日志的输出的目的地,一个输出源就叫一个Appender,appender的类别有:Console(控制台)File(文件)JDBC、JMS等等。

完整的 log4j.properties 配置:
log4j.rootLogger=debug, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=L.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}  %l %m%n
日志输出布局:
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}  %l 
  • %c 类的全名,如pers.hanchao.hespringmvc.log4j.App
  • %d 时间,如2018-01-19 22:23:29,899;可以通过{}指定格式,如%d{yyyy-MM-dd},输出为2018-01-19
  • %l 类路径(精确到行),如pers.hanchao.hespringmvc.log4j.App.main(App.java:13)
  • %m 即日志信息本身,如致命级别日志: 指出每个严重的错误事件将会导致应用程序的退出。
  • %n 回车换行
  • %p 打印当前日志的日志级别,如:LOGGER.fatal(“致命错误”);的日志级别为FATAL
  • %r 输出自应用启动到输出该日志信息所耗费的毫秒数
  • %t 输出产生该日志事件的线程名,如main

####LogTest.class

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class LogTest
{
    public static Logger logger = Logger.getLogger(LogTest.class);
    public static void main( String[] args )
    {
        PropertyConfigurator.configure("src/log4j.properties");
        //BasicConfigurator.configure();
        // 记录debug级别的信息
        logger.debug("This is debug message.");
        // 记录info级别的信息
        logger.info("This is info message.");
        // 记录error级别的信息
        logger.error("This is error message.");
    }
}

日志会输出到控制台和文件中。

log4j功能十分强大,每种功能对应着不同的配置(如定时输出日志功能),以后继续补充。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值