Log4j日志组件解析

来源:互联网 发布:羞羞的铁拳影评知乎 编辑:程序博客网 时间:2024/06/07 12:36

1.什么是Log4j

Log4j是apache的一个开源项目,是一个用来操作日志的包。通过使用Log4J,可以指定日志信息输出的目的地,如控制台、文件、CUI组件、NT的事件记录器;还可以控制每一条日志输出格式。并且都是采用配置文件的形式。

2.Log4j由什么组成

 <1>.Logger:负责生成日志,并能够对日志信息进行分类筛选,通俗地讲就是决定什么日志信息应该输出,什么日志信息应该被忽略。

 <2>.Appender:定义了日志信息输出的目的地,指定日志信息应该被输出到什么地方,这些地方可以是控制台、文件、网络设备等

 <3>.Layout: 指定日志信息的输出格式

通过三个组件的协同工作,可以让开发者依据日志信息类别记录信息,并且可以使程序运行期间,控制日志的输出格式和日志存放地点。一个Logger可以有多个Appender,这意味着日志信息可以同时输出到多个设备上,每个Appender都对应一种Layout,Layout决定了输出日志信息的格式。

3.用法

引入jar包:

log4j-1.2.11.jar

src/log4j.properties:

############# 日志输出到控制台 ##############通过根元素指定日志输出的级别、目的地#  日志输出的优先级:  debug < info < warn < error log4j.rootLogger=info,console,file#日志输出到控制台使用的api类log4j.appender.console=org.apache.log4j.ConsoleAppender#指定日志输出的格式:灵活的格式log4j.appender.console.layout=org.apache.log4j.PatternLayout#具体格式的内容log4j.appender.console.layout.ConversionPattern=%d %p %c.%M()-%m%n############# 日志输出到文件 #############log4j.appender.file=org.apache.log4j.RollingFileAppender# 文件参数,指定日志文件的路径(此处是输出到tomcat下的logs的文件夹)log4j.appender.file.File=../logs/MyLog.log# 文件参数,指定日志文件的最大大小log4j.appender.file.MaxFileSize=5kb# 文件参数,指定产生日志文件的最大数目log4j.appender.file.MaxBackupIndex=100log4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d %c.%M()-%m%n

输出到控制台的实现。那么输出到文件中的配置就不需要了,否则就会报找不到file的错误

public class App_Log4j {Log log = LogFactory.getLog(App_Log4j.class);@Testpublic void save() {try {log.info("保存: 开始进入保存方法");int i = 1/0;log.info("保存: 执行保存结束,成功");} catch (Exception e) {log.error("执行App类Save()方法出现异常!");  // 异常e.printStackTrace();}}@Testpublic void testLog4j() throws Exception{// 输出不同级别的提示log.debug("调试信息");log.info("信息提示");log.warn("警告");log.error("异常");}}
结果:


--------------------------------------------------------------源于文档:----------------------------------

日志信息格式中几个符号所代表的含义:
  -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"输出日志信息换行

   %M:  代表方法的名字

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



0 0
原创粉丝点击