日志工具Log4J

目前在java编程中,日志已经发展出一套成熟的机制。常用的日志控件有Commons-logging、log4j以及JDK自带的Logging。从最初的System.out.println()到现在的Log4j,java日志功能日益强大

1.Jdk的logging

象征意义大于实际意义,不推荐使用,不赘述

2.Log4j控件

该控件是目前会用最广泛的控件,最初是一个开源的java项目,后面壮大了起来,现已归属Apache组织,现已衍生出Log4c(C++版本)、Log4N(.Net版本)等,它将日志分为ALL、TRACE(跟踪)、DEBUG(调试)、INFO(信息)、WARNING(警告)、ERROR(错误)、FITAL(致命)、OFF等几个级别,级别一次升高。级别高的Level会屏蔽级别低的信息。

Log4j.properties配置文件

导入log4j的jar包,例如:log4j-1.2.14.jar。日志配置输出级别、输出到哪、输出信息、输出格式等,都在该文件中进行配置,log4j.properties文件放到项目的src目录下即可。

日志记录器Logger

Logger 就是java代码中的Logger,例如:

public class TestLog{

public static Logger log = Logger.getLogger(TestLog.class); //此处为Logger

}

Logger的名字是Logger.getLogger()方法的参数,一般情况下,Log4j会取其所在的类名为Logger的名称,例如上述代码。

Logger为单态模式:相同名字的Logger只会有一个实例。如再构建一个同名的Logger,Log4j会返回先前的Logger实例

命名规则:一般以类名作为Logger的名称。命名规则类似于java中的package

log4j有一个根记录器rootLogger,他是所有Logger的父类


Logger的配置

一般情况下,只需要配置根记录器rootLogger即可,所有的Logger都会沿用rootLogger的配置

在log4j.properties文件中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是Appender

rootLogger配置

#配置rootLogger为ERROR级别,输出地为A1

log4j.rootLogger=ERROR, A1

#配置 名称为 TestLog的Logger为DEBUG级别覆盖了父类rootLogger的ERROR级别,输出地配置同理,输出地继承rootLogger配置,紫色部分为包名,Testlog为类名

log4j.logger.com.xuezi.testlog.TestLog=DEBUG

#配置Appender A1,输出到控制台,使用正则表达式布局

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n

类别category配置

通过设置类别来设置类别下面所有的Logger,category类似于java中的package

log4j.rootLogger=ERROR, A1

#作用于类别com.xuezi下所有的Logger

log4j.category.com.xuezi=DEBUG

输出地 Appender

Appender表示日志输出到什么地方,常用的输出地有控制台、文件、数据库、远程服务器等。所有的Appender都实现自org.apache.log4j.Appender接口

输出到控制台

控制台是最常用的输出,控制台输出实现类为org.apache.log4j.ConsoleAppender

log4j.rootLogger=ERROR, A1

log4j.logger.com.xuezi.testlog.TestLog=DEBUG

#配置Appender A1,输出到控制台,使用正则表达式布局

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.Threshold=DEBUG #DEBUG以上级别输出时

log4j.appender.A1.Encoding=UTF-8 #编码方式

log4j.appender.A1.ImmediateFlush=true  #是否立即输出

log4j.appender.A1.layout=org.apache.log4j.PatternLayout  #输出格式,表达式配置

log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n


输出到文件

文件输出是指将日志输出到指定文件,文件输出的实现类为org.apache.log4j.FileAppender,配置时需要用File指定文件名称。可以用相对路径,也可以使用绝对路径

log4j.logger.com.xuezi.TestLog=DEBUG, f

log4j.appender.f = org.apache.log4j.FileAppender #输出到文件

log4j.appender.f.File=E:/LogTest/dmc.log      #文件位置

log4j.appender.f.Append=true  #追加文件内容 如果设置为false则Logger初始化时会清除掉原来的文件内容,重启日志丢失

log4j.appender.f.layout=org.apache.log4j.PatternLayout  #输出格式,表达式配置

log4j.appender.f.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n

输出到按大小滚动文件

把文件输出到指定文件,文件达到指定大小时,会自动更名。按尺寸滚动文件输出类为org.apache.log4j.RollingFileAppender

log4j.logger.com.xuezi.TestLog=DEBUG, f, rolling_file    #Logger支持多个Appender,用逗号隔开

...

log4j.appender.rolling_file=org.apache.log4j.RollingFileAppender  #输出到滚动文件

log4j.appender.rolling_file.Threshold=DEBUG #DEBUG以上才是用

log4j.appender.rolling_file.File=E:/TestLog/rolling.log  #滚动文件名

log4j.appender.rolling_file.Append=true #追加方式

log4j.appender.rolling_file.MaxFileSize=10KB #文件达到10KB就自动更名

log4j.appender.rolling_file.MaxBackupIndex=100 #最多备份100个文件

log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout  #输出格式,表达式配置

log4j.appender.rolling_file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n

配置的滚动文件名为rolling.log,文件最大为10KB。当rolling.log达到10KB是时,会自动更名为rolling.log.1、rolling.log.2.、直到rolling.log.100

输出到按日期滚动文件

将日志输出到指定文件,当日期发生变化时,会将文件按指定的日期格式自动改名。日期滚动文件输出类为org.apache.log4j.DailyRollingFileAppender,


log4j.logger.com.xuezi.TestLog=DEBUG,  rolling_file

log4j.appender.rolling_file=org.apache.log4j.DailyRollingFileAppender    #滚动文件

log4j.appender.rolling_file.File=E:/rolling.log

log4j.appender.rolling_file.DatePattern=.yyyy-MM-dd  #滚动日期格式

log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout  #输出格式,表达式配置

log4j.appender.rolling_file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n

日志文件名为rolling.log,进入新的一天,文件会被自动更名,格式为rolling.log.2018-0401


3.commons-logging控件

使用类似于Log4j,使用规则完全一样,不在赘述


注:原创不易,转载请标明出处:https://blog.csdn.net/Kermit_father


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值