Log4j 学习笔记(二)Log4j快速入门配置文件log4j.properties
2016-10-25 23:54
627 查看
在该教程中,我们将展示使用经典的log4j 1.2.x记录java应用程序中的debug或者error级别的日志信息。
更多精彩请阅读 东陆之滇的csdn博客:http://blog.csdn.net/zixiao217
如果你不是maven的使用者,请移步Log4j官网下载jar包手动添加到你的工程的library中。
注意
1.单独的java应用,确保编译后log4j.properties在你的project/classes目录下
2.java web应用,确保编译后log4j.properties在WEB-INF/classes目录下
log4j.properties
注意:为了更深理解
我们来梳理一下:
%d{yyyy-MM-dd HH:mm:ss} = 设置日期时间格式, 参考 SimpleDateFormat JavaDoc.
%-5p = 设置日志的优先级, 像DEBUG 或者ERROR级别. -5 是可选的, 为了打印漂亮的格式.
%c{1} = 我们通过getLogger()得到的日志名字, 可以参见Log4j模式布局指南.
%L = 记录行号.
%m%n = 日志和中断行的信息.
日志信息示例:
然后,日志信息也有不同的级别,例如,debug、info、warn、error和fatal。通常我们不只需要记录debug和error级别的日志。
HelloExample.java:
日志输出:
更多精彩请阅读 东陆之滇的csdn博客:http://blog.csdn.net/zixiao217
1. 工程目录
Maven风格的工程目录结构:2. 引用Log4j
在pom.xml中引入依赖:<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
如果你不是maven的使用者,请移步Log4j官网下载jar包手动添加到你的工程的library中。
3. log4j.properties
创建一个log4j.properties文件放到resources 目录下。
注意
1.单独的java应用,确保编译后log4j.properties在你的project/classes目录下
2.java web应用,确保编译后log4j.properties在WEB-INF/classes目录下
log4j.properties
# 日志收集器的操作 log4j.rootLogger=DEBUG, stdout, file # 将日志信息定向到控制台 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # 将日志信息定向到文件中 log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=C:\\log4j-application.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
注意:为了更深理解
ConversionPattern的配置,可以参见Log4j模式布局指南
我们来梳理一下:
%d{yyyy-MM-dd HH:mm:ss} = 设置日期时间格式, 参考 SimpleDateFormat JavaDoc.
%-5p = 设置日志的优先级, 像DEBUG 或者ERROR级别. -5 是可选的, 为了打印漂亮的格式.
%c{1} = 我们通过getLogger()得到的日志名字, 可以参见Log4j模式布局指南.
%L = 记录行号.
%m%n = 日志和中断行的信息.
日志信息示例:
2014-07-02 20:52:39 DEBUG className:200 - This is debug message 2014-07-02 20:52:39 DEBUG className:201 - This is debug message2
4. Demo - 怎样记录日志信息?
要记录日志消息,首先需要声明一个final static的logger并定一个名字,通常我们使用包名.类名的全名形式。
final static Logger logger = Logger.getLogger(classname.class);
然后,日志信息也有不同的级别,例如,debug、info、warn、error和fatal。通常我们不只需要记录debug和error级别的日志。
//logs a debug message if(logger.isDebugEnabled()){ logger.debug("This is debug"); } //logs an error message with parameter logger.error("This is error : " + parameter); //logs an exception thrown from somewhere logger.error("This is error", exception);
示例:设置debug级别日志
log4j.properties:log4j.rootLogger=DEBUG, stdout #...
HelloExample.java:
package org.byron4j.helloLog4j; import org.apache.log4j.Logger; public class HelloExample{ final static Logger logger = Logger.getLogger(HelloExample.class); public static void main(String[] args) { HelloExample obj = new HelloExample(); obj.runMe("http://blog.csdn.net/zixiao217"); } private void runMe(String parameter){ if(logger.isDebugEnabled()){ logger.debug("This is debug : " + parameter); } if(logger.isInfoEnabled()){ logger.info("This is info : " + parameter); } logger.warn("This is warn : " + parameter); logger.error("This is error : " + parameter); logger.fatal("This is fatal : " + parameter); } }
日志输出:
2016-10-25 20:52:39 DEBUG HelloExample:19 - This is debug : http://blog.csdn.net/zixiao217 2016-10-25 20:52:39 INFO HelloExample:23 - This is info : http://blog.csdn.net/zixiao217 2016-10-25 20:52:39 WARN HelloExample:26 - This is warn : http://blog.csdn.net/zixiao217 2016-10-25 20:52:39 ERROR HelloExample:27 - This is error : http://blog.csdn.net/zixiao217 2016-10-25 20:52:39 FATAL HelloExample:28 - This is fatal : http://blog.csdn.net/zixiao217[/code]示例:设置error级别日志
log4j.properties:log4j.rootLogger=ERROR, stdout #...
执行HelloExample.java将输出:2016-10-25 20:56:02 ERROR HelloExample:27 - This is error : http://blog.csdn.net/zixiao217 2016-10-25 20:56:02 FATAL HelloExample:28 - This is fatal : http://blog.csdn.net/zixiao217[/code]
我们看一下Log4j的Priority 类:package org.apache.log4j; public class Priority { public final static int OFF_INT = Integer.MAX_VALUE; public final static int FATAL_INT = 50000; public final static int ERROR_INT = 40000; public final static int WARN_INT = 30000; public final static int INFO_INT = 20000; public final static int DEBUG_INT = 10000; //public final static int FINE_INT = DEBUG_INT; public final static int ALL_INT = Integer.MIN_VALUE; ... }
如果在log4j.properties定义了日志级别,则打印日支时只有级别值大于等于它的才会记录。5. Demo - 怎样记录一个异常?
示例展示了使用Log4j记录异常信息:package org.byron4j.helloLog4j; import org.apache.log4j.Logger; public class HelloExample2{ final static Logger logger = Logger.getLogger(HelloExample2.class); public static void main(String[] args) { HelloExample2 obj = new HelloExample2(); try{ obj.divide(); }catch(ArithmeticException ex){ logger.error("Sorry, something wrong!", ex); } } private void divide(){ int i = 10 /0; } }
输出:2016-10-26 00:52:39 ERROR HelloExample2:15 - Sorry, something wrong! java.lang.ArithmeticException: / by zero at org.byron4j.helloLog4j.HelloExample2.divide(HelloExample2.java:22) at org.byron4j.helloLog4j.HelloExample2.main(HelloExample2.java:13)
入门示例结束了。
相关文章推荐
- Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
- Log4j 学习笔记(三)log4j.properties配置文件详解
- 【极客学院】-python学习笔记-Python快速入门(面向对象-引入外部文件-Web2Py创建网站)
- Log4j 学习笔记(一) log4j快速入门教程
- Log4j 学习笔记(四)log4j的配置文件
- hibernate3 学习笔记(三) hibernate 日志配置文件 log4j.properties
- Unity 学习笔记(2) -- 配置文件的使用
- ubuntu学习笔记(二)之 GRUB的配置文件menu.lst的写法(ext3无损转为ext4)
- java:log4j学习(3)-转帖:Log4J 最佳实践之全能配置文件
- hibernate配置文件学习笔记
- [WCF 学习笔记] 11. 配置文件
- Python核心编程(第二版)学习笔记01 【第2章 快速入门】
- IBATIS学习笔记(3) SQL Map XML配置文件
- freemarker学习笔记_快速入门
- Log4j 学习日记 - 手工加载配置文件
- Unity Application Block 学习笔记之一使用配置文件
- Hibernate 3学习笔记 - 简单的Hibernate配置文件
- ASP.NET2.0快速入门--存储用户配置文件
- MYSQL学习笔记(5)配置:使用选项文件
- 1 Struts2入门与配置学习笔记