博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4j的使用
阅读量:6232 次
发布时间:2019-06-21

本文共 5248 字,大约阅读时间需要 17 分钟。

一、导论

1、log4j是什么?

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

 

2、log4j的组成

Log4j中有三个主要的组件,它们分别是 LoggerAppenderLayout

  • Logger - 在执行应用程序时,接收日志语句生成的日志请求。
  • Appender - 管理日志语句的输出结果。
  • Layout - 用于指定 appender 将日志语句写入日志目的地所采用的格式。

Logger,它是一种重要的日志处理组件, 可以通过 log4j API 的 logger 类对其进行访问。它的方法有:debug、info、warn、error、fatal 和 log。这些方法用于记录消息。

Appender ,执行日志语句时,Logger 对象将接收来自日志语句的记录请求。此请求是通过 logger 发送至 appender 的。然后,Appender 将输出结果写入到用户选择的目的地。对于不同的日志目的地,提供不同的 appender 类型。这些 appender 包括:用于文件的 file appender、用于数据库的 JDBC appender 和用于 SMTP 服务器的 SMTP appender。

Layout 主要包括简单布局、模式布局和 HTML 布局。而Appender采用Layout所采用的布局以及格式,将输出结果写入日志目的地。

三大组件之间的关系图:

 

二、log4j的使用

 

2.1、log4j的配置

目前log4j的配置只支持两种方式,第一种是XML文件,第二种是.properties文件。当前,大多数都采用第二种方式。为了偷懒,小主也采用第二种方式配置。

 

2.1.1、配置Logger

 
# 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。
 
# 使用log4j大概涉及3个主要概念:
# 	1.公共类 Logger:
# 		Logger 负责处理日志记录的大部分操作。
# 	2.公共接口 Appender
# 		Appender 负责控制日志记录操作的输出。
# 	3.公共抽象类Layout
# 		Layout 负责格式化Appender的输出。
 
# -----------------Logger----------------------------------
# 日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。
# DEBUG < INFO < WARN < ERROR < FATAL
 
# 配置根Logger
# log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …
log4j.rootLogger=debug,console,file
 
# -----------------Logger----------------------------------

分析:

 

 

2.1.2、 配置Appender

配置日志信息输出目的地Appender,主要有以下几种Appender:

 
# org.apache.log4j.FileAppender(文件)
# org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
# org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
# org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
# org.apache.log4j.SocketAppender(Socket)
# org.apache.log4j.NtEventLogAppender(NT的Event Log)
# org.apache.log4j.JMSAppender(电子邮件)
# org.apache.log4j.ConsoleAppender(输出到控制台)

我们先配置输出到控制台的appender

 
log4j.appender.console = org.apache.log4j.ConsoleAppender

分析:

 

 

2.1.3、配置Layout

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

配置Layout如下:

 
log4j.appender.console.layout=org.apache.log4j.PatternLayout
      配置Layout的选项参数:

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

 

 

2.1.4、综合实验

一般情况下,都是以分类方式配置的,这样更方便更改配置,比如配置控制台、文件输出等。
 
#总体设置日志级别,appender
log4j.rootLogger=debug,console,file
 
 
#------------------------------ 文件 -------------------------------
 
# 输出源file将日志输出到文件 (指定appender)
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
# 日志输出的文件(设置appender的选项参数)
log4j.appender.file.File = mylog.log
 

 

 

# 指定Layout
log4j.appender.file.layout=org.apache.log4j.PatternLayout
# 指定Layout的选项参数
log4j.appender.file.layout.ConversionPattern =[%c.%p] %m %t %d{yyyy-MM-dd HH:mm:ss,SSS}%n
 
#-------------------------------------------------------------------
 

2.2 配置文件的读取

 

2.3 封装log4j

 
 
 
 

2.4 正式使用logger记录信息

 
 
 

附录

1、输出级别的种类

ERROR、WARN、INFO、DEBUG

1.ERROR 为严重错误 主要是程序的错误
2.WARN 为一般警告,比如session丢失
3.INFO 为一般要显示的信息,比如登录登出
4.DEBUG 为程序的调试信息

 

2、appender

appender的种类

1.org.apache.log4j.ConsoleAppender(控制台)

2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

appender的选项参数

1.控制台选项(ConsoleAppender)

Threshold=DEBUG:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台

2.文件选项(FileAppender)

Threshold=DEBUF:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

3.RollingFileAppender

Threshold=DEBUG:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

具体的可以参照log4j官网。

 

 

3、Layout

Layout的种类

1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),

2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Layout的选项参数

日志信息格式中几个符号所代表的含义:

-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"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
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字符,就从左边较远输出的字符截掉。

 

常用:log4j.appender.file.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss} [%-5p]  %t (%F:%L) -%m%n

相关链接:

1、

 

参考:

转载于:https://www.cnblogs.com/aoguren/p/4660738.html

你可能感兴趣的文章
任正非:80后90后是一代将星在闪烁
查看>>
Oracle 12c多租户特性详解:PDB 的备份与恢复
查看>>
《Adobe Illustrator CS4中文版经典教程》—第0课0.1节简 介
查看>>
Dat Data 13.5.1 发布,点对点数据共享
查看>>
在浏览器中体验 Ubuntu
查看>>
中国证实互联网故障源于根服务器遭攻击
查看>>
《OpenGL ES应用开发实践指南:Android卷》—— 1.3 初始化OpenGL
查看>>
微软正式封杀 7 代酷睿、Ryzen 运行 Win7!补丁断更
查看>>
Chrome 50 终止支持 Windows XP 和 OS X 10.6
查看>>
Java集合细节(三):subList的缺陷
查看>>
告别 Unity,Ubuntu 最新构建版启用 GNOME
查看>>
《初级会计电算化实用教程(金蝶ERP—K/3版)》一1.2 会计电算化发展概况
查看>>
《Cisco VoIP(CVOICE)学习指南(第三版)》一第1章 介绍VoIP网络
查看>>
Docker 的未来
查看>>
一封普通美国人的来信:马云你是中美小企业之间最好的“导游”
查看>>
《数据结构与抽象:Java语言描述(原书第4版)》一2.1.7 删除项的方法
查看>>
《3D打印:正在到来的工业革命》一一1.4 先行者们在做什么
查看>>
TimeTraveler. - 朝花夕拾,拾了又拾
查看>>
spring之Bean的生命周期
查看>>
如何打造支撑百万用户的分布式代码托管平台
查看>>