Log4j的使用
来源:互联网 发布:公司网络越狱 编辑:程序博客网 时间:2024/06/06 07:53
一直在开发android应用,里面的log工具非常好用,比之前的System.out.println();好了很多啊。最近学习java web开发就寻找一些有没有类似的工具,在网上看到log4j,貌似挺不错的样子。于是搞鼓了一下,在这里做个笔记让后人少走弯路
1、 Log4j是什么?
Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧: http://jakarta.apache.org/log4j 。
2、Log4j的概念
Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。
Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。
3.怎么使用:
1)首先导入log4j-1.*.jar,把相应的文件复制到WebRoot/WEB-INF/lib中即可。
2)然后在src根目录创建log4j.properties文件,配置一下
3)log4j.properties内容如下
log4j.rootLogger=info, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize= 100KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
配置的详细说明如下
首先,是设置root,格式为 log4j.rootLogger=[level],appenderName, ...,其中level就是设置需要输出信息的级别,后面是appender的输出的目的地,appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 配置日志信息输出目的地Appender,其语法为 log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 ... log4j.appender.appenderName.option = valueN Log4j提供的appender有以下几种: org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件) org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)配置日志信息的格式(布局),其语法为: log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 .... log4j.appender.appenderName.layout.option = valueN Log4j提供的layout有以下几种: org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似: 2002年10月18日 22:10:28,921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
4.配置完成我们来试一试效果,我用的是上一篇博客的工程,启动可以在控制台看到以下内容
看到这个信息代表设置成功了
5.在代码里面使用
我在UserManagerAct.java的加入以下代码
public String doLogin(){System.out.println("111111111111111111111111111");Logger logger = Logger.getLogger(getClass()); logger.debug("debug"); logger.error("error");if(this.user.getUname() == null || this.user.getPassword() == null) return INPUT;try {Userinfo user = userService.doLogin(this.user.getUname(), this.user.getPassword());if(user != null){ActionContext.getContext().getSession().put("userinfo", user);return doQuery();}elsereturn INPUT;} catch (Exception e) {return ERROR;}}
重启了下tomcat(如果是debug模式可以不重启)
在控制台看到以下信息
可以看到
System.out.println("111111111111111111111111111");
Logger logger = Logger.getLogger(getClass());
logger.debug("debug");
logger.error("error");
System.out.println("111111111111111111111111111");和logger.error("error");都有输出。就是 logger.debug("debug");没有输出,这是由于我们的配置文件写的是info级别的。就这么多了剩下的留给大家研究了
- Log4j的使用!
- Log4j的使用
- Log4j的使用
- log4j的第一步使用
- Log4j的使用
- log4j的使用
- Log4j的简单使用
- Log4j的使用
- Log4j的使用
- log4j/log4e的使用
- log4j/log4e的使用
- Log4j 的灵活使用
- log4j/log4e的使用
- log4j的使用
- log4j的使用
- Log4j的使用
- LOG4J的使用- -
- Log4j的使用
- C# 獲取照片拍攝時間
- 统计字母
- How to store CGPoint or CGRect in NSArray?
- .NET COM+技术
- 黑马程序员_java之面向对象
- Log4j的使用
- 模板方法模式深度解析(三)
- NLP 检索结果聚类
- 黑马程序员_java之内部类和异常
- “2012中国年度天使投资人”蔡文胜:彻底拥抱新趋势
- 布隆过滤器
- 黑马程序员_java之集合
- 黑马程序员_java之IO流
- proguard 不混淆内部类的方法