log4j之log4j.properties参数详解(log4j各个配置参数含义)

====>log4j之log4j.properties参数详解

====>log4j介绍:

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

为什么使用log4j输出日志

(1) 通过修改配置文件,就可以决定log信息的目的地——控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等。

(2) 通过修改配置文件,可以定义每一条日志信息的级别,从而控制是否输出。在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码(System.out.println(……)等)。

(3) 使用log4j,需要整个系统有一个统一的log机制,有利于系统的规划。

配置参数说明:

1、八种输出级别

  • OFF:关闭所有日志信息
  • FATAL:严重错误 主要是程序的错误,不可修复,程序已经到达不可运行程度
  • ERROR:错误 程序的错误,可以修复,但程序运行中可能会发生不可恢复的严重错误
  • WARN:警告,程序有错误,只做警告动作,程序依然可以正常运行
  • INFO:要输出的信息,显示给程序使用者
  • DEBUG:输出程序运行时信息,以便更好的调试
  • TRACE:比DEBUG更细粒度的事件信息
  • ALL:开启所有日志信息
以上八种日志级别从上到下依次由高到低排序,但是log4j建议使用ERROR、WARN、INFO、DEBUG四个级别,当然了,除此之外,自己也可以定义其他级别,但是开发当中基本的几个级别已经可以满足需求。

2、五种日志信息输出目标

  • org.apache.log4j.ConsoleAppender输出到控制台
  • org.apache.log4j.FileAppender输出到文件
  • org.apache.log4j.DailyRollingFileAppender每天产生一个日志文件
  • org.apache.log4j.RollingFileAppender限定日志文件大小,文件大小到达指定尺寸的时候产生一个新的文件
  • org.apache.log4j.WriterAppender将日志信息以流格式发送到任意指定的地方

3、四种配置日志信息的格式

  • org.apache.log4j.HTMLLayout:以HTML表格形式布局
  • org.apache.log4j.PatternLayout:可以灵活地指定布局模式
  • org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串
  • org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等等信息

4、控制台选项

  • Threshold=DEBUG:指定日志消息的输出最低层次
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出
  • Target=System.err:默认情况下是:System.out,指定输出控制台
  • Threshold=DEBUF:指定日志消息的输出最低层次
  • File=mylog.txt:指定消息输出到mylog.txt文件
  • Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容
  • MaxFileSize=100KB:后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件
  • MaxBackupIndex=2:指定可以产生的滚动文件的最大数
  • log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n:自定义输出格式
4.1、日志信息格式中几个符号所代表的含义:

-X: X信息输出时左对齐
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n:输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行

4.2、可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:

1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉

5、几个常用配置:

A1–打印到屏幕上

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n

A2–打印到文件DAOLog中–专门为DAO层服务

log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=DAOLog
log4j.appender.A2.DatePattern=’.’yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

A3–打印到文件BusinessLog中–专门记录逻辑处理层服务log信息

log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=BusinessLog
log4j.appender.A3.DatePattern=’.’yyyy-MM-dd
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

A4–打印到文件alllog中–记录所有log信息

log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=alllog
log4j.appender.A4.DatePattern=’.’yyyy-MM-dd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

Appender的使用

log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=demo
log4j.appender.A2.DatePattern=’.’yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%m%n

Layout的配置

log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

总结:

为什么这么多人都在使用log4j?Because:

1)很明显我们在编写代码的时候有各种需要打印日志的需求,比如:我们调试代码的时候;我们的应用出现了问题,我们分析、定位、解决问题的时候;我们想将某些日志信息作为离线的业务数据分析的时候等等

2)最简单的打印日志的方式就是使用系统本身的输出语句,不过对于大多数需求这种方式都是不能满足的

3)于是我们的目光可能会向编写一个专门打印日志信息的工具类转移,不过有人更近了一步,写出了一个日志框架供我们使用

4)使用日志框架的好处显而易见,方便、自在、功能强大能够满足各种需求,不好的地方也是有的,比如:如果你也进行了试验你会发现,程序变慢了,需要一定的时间和精力作为学习的成本

5)日志框架都是能控制什么哪?那我们需要打印的日志都能满足什么样的需求哪?通常我们希望一个日志框架能够灵活的做到以下三点:

①:能够控制日志信息想往哪里打就往哪里打,比如:控制台、文件、邮箱、数据库等等

②:能够控制日志信息想怎么打就怎么打,比如:我想要打印时间、程序的名称、程序的方法名、程序的行号、线程的名称等等

③:能够控制日志信息想打什么打什么,不想打的就不打,日志信息是分级别的,有时候我只想看错误的信息或者警告的信息,有时候我想看到所有的信息我想调试程序等等

6)有这么一个工具,尤其是当程序出现问题的时候,项目负责人让你赶紧解决问题,这时候有一份日志文件可供分析,一定好过各种猜测,编程之中没有偶然性,输入对应必然输出结果!


以上内容仅供参考和学习 ———– 如有雷同,纯属意外……

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页