先看一个log4j.properies配置文件:
#定义输出级别和输出平台
log4j.rootLogger=INFO,stdout,fileout
#设定stdout输出平台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
#每天一个日志文件
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=test.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
#对不同的package定义不同的输出级别
log4j.logger.com.daniel.test=DEBUG
该配置文件的一个输出结果如下:
[[INFO][2007-04-11 23:21:19][com.daniel.test.AspectJTest.showMessage(AspectJTest.java:17)]:AspectJTest$showMessage@Before:BigNumTest.statisticPrime
[INFO ][2007-04-11 23:21:20][com.daniel.test.BigNumTest.main(BigNumTest.java:25)]:从[1]到[225000]一共有[20020]个素数.
[INFO ][2007-04-11 23:21:20][com.daniel.test.BigNumTest.main(BigNumTest.java:27)]:一共用了[391]毫秒!
另外一个输出在文件test.log
分析:log4j.properies定义一般分3部分:
log4j.rootLogger(必须)、log4j.appender(必须)、log4j.logger(不必须)
1、log4j.rootLogger
这个配置是必须的,它的定义格式:
log4j.rootLogger = level , appenderName, appenderName, …
lelve 是定义的输出级别,低于该级别的将不会输出,主要级别有OFF、ALL、FATAL、ERROR、WARN、INFO、DEBUG或自定义级别,其中 OFF设定的话将不输出任何信息,ALL设定的话将输出所有信息;另外5个的级别 FATAL>ERROR>WARN>INFO>DEBUG,如果你的lenel设定为INFO,那么不能输出DEBUG信息;
appenderName是指定日志信息输出到哪个地方,控制台,文件等等,可同时指定多个输出目的地。
2、log4j.appender
这个也是必须配置的,它是负责控制日志记录操作的输出。它的定义格式如下:
log4j.appender.appenderName=someAppender(选择一种输出平台)
[log4j.appender.appenderName.File=文件名](文件输出定义路径)
log4j.appender.appenderName.layout=输出布局
log4j.appender.appenderName.layout.ConversionPattern=输出格式
log4j.appender.appenderName指定输出appender,Log4J提供了一下几种appender:
a),org.apache.log4j.ConsoleAppender(控制台)
b),org.apache.log4j.FileAppender(文件)
c),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
d),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件)。
e),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j.appender.appenderName.layout指定日志信息的格式(布局)Layout,它负责格式化Appender的输出。Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。
log4j.appender.appenderName.layout.ConversionPattern格式化日志信息,Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
3,log4j.logger
这个不是必需的,如果不配置这个,则采用log4j.rootLogger的level级别。它主要是具体到package、Class级别的info,它的定义格式如下:
log4j.logger.packageName[.ClassName]=level[,appender]
它也可以输出到指定的appender,也可以不指定输出到默认appender。
4,log4j的使用
a)、从www.apache.org下载commongs-logging包;
b)、在你的class里面定义protected final Log logger = LogFactory.getLog(this.getClass());
c)、在需要日志输出的地方logger.info(...),logger.error(...),logger.debug(...),....注意,在使用时前最好做个判断if (logger.isDebugEnabled()){logger.debug("...");}其他类似。
自己的配置文件 :
log4j.properties配置文件
log4j.rootLogger=INFO, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${pjmqle.root}/WEB-INF/log/s2.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=5
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.logger.java.sql=INFO
log4j.logger.org.hibernate=INFO
如果只是在Spring环境下用,那么web.xml 部分配置如下,
若是整合在Struts2中则不用配置web.xml 把此log4j.properties文件放到classpath中即可
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>pjmqle.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
利用log4j代替System.out.println()输入信息:
1、在入口类(main方法所在的类)的静态区初始化log4j
static {
PropertyConfigurator.configure(
YesFTPClientFrame.class.getResource("log4j.properties"));
}
2、在每一个需要log的地方都初始化一个私有静态的变量(xx为所在的类名)
private static Logger logger = Logger.getLogger(xx.class);
或者去掉static 把private改成protected,把logger这个静态变量写在父类中,让继承它的子类也能用,
protected Logger logger = Logger.getLogger(this.getClass());
注意:要写成this.getClass(),这样才能把字类打印出来,方便错误的查找,否则打印出来的都是父类。
3、使用log4j提供的方法打印信息(也可以是.error()等方法)
logger.info(”hello”);
4、用log4j输出异常的堆栈信息(在try,catch块中使用,代替e.printStackTrace();)
logger.error("oops, got an exception: ", e);
分享到:
相关推荐
本文将深入解析Log4j的基本使用方法,涵盖配置文件的定义、日志信息的优先级设置、输出目的地与格式的配置,以及如何在代码中有效利用Log4j进行日志记录。 ### 一、配置文件的定义 Log4j的灵活性很大程度上来源于...
- `log4j-1.2.14.jar`: 这是Log4j 1.2.14版本的jar包,包含了Log4j的全部类和方法,是使用Log4j进行日志记录的核心组件。 - `commons-logging-1.0.4.jar`: 这是Apache Commons Logging库,它是Java日志API的一个抽象...
二、Log4j基本使用方法 Log4j主要由以下三个组件构成: 1. **日志优先级**:Log4j支持ERROR, WARN, INFO, DEBUG和TRACE等不同优先级的日志级别,你可以根据需要调整这些级别,以控制哪些日志信息会被记录。在配置...
本文将深入探讨Log4j的基本概念、配置与使用方法。 1. **什么是Log4j** Log4j是一个基于Java的日志记录工具,它提供了灵活的控制来记录日志信息,包括日志级别(DEBUG、INFO、WARN、ERROR、FATAL)、日志输出格式...
### log4j的基本使用方法和实例详解 #### 引言 在软件开发中,日志记录扮演着至关重要的角色,不仅有助于程序异常处理和安全性的维护,还是代码调试、性能监控以及后期审计的重要工具。传统的在代码中直接插入打印...
### Java中log4j的使用方法详解 #### 一、log4j简介 Log4j是Apache的一个开源项目,...以上就是关于Log4j的基本使用方法的详细介绍。通过合理的配置和使用,Log4j可以帮助开发者更高效地管理和调试程序中的日志信息。
本文将详细介绍Log4j的使用方法以及配置文件`log4j.properties`的设置。 1. **Logger** Logger是日志信息的源头,它是Log4j中最基本的类。通过创建Logger实例,你可以为不同的类或模块分配不同的日志级别,如DEBUG...
描述中提到的“NULL 博文链接:https://hwei-344370758.iteye.com/blog/1716684”表明可能有一个在线博客文章提供了更详细的解释,但在这个回答中,我们将基于log4j的基本概念和使用方法进行详述,而不依赖于外部...
四、在 Maven 项目中引入 Log4j 依赖 在 Maven 项目中,需要引入 Log4j 依赖项,以便使用 Log4j。下面是一个基本的 Maven 依赖项配置: ``` <groupId>log4j <artifactId>log4j <version>1.2.16 ``` 这个配置...
本文介绍了 Log4j 在 Java 程序中的基本使用方法。从创建 Logger 实例、配置环境到插入日志信息,再到配置文件的具体设置,都进行了详细的讲解。通过这些步骤,你可以轻松地在 Java 应用中集成 Log4j,实现日志记录...
### log4j配置与使用方法 #### 一、log4j简介 log4j是Apache的一个开源项目,通过使用log4j,开发者能够控制日志信息的生成、等级以及输出的目的地。它允许用户根据不同的环境调整日志的级别,从而帮助开发者在...
首先,我们需要了解Log4j的基本结构。一个简单的Log4j项目通常包含以下几个部分: 1. **配置文件**:Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,它定义了日志的级别(如DEBUG、INFO、WARN、ERROR、...
这篇文档将详细介绍Log4j的使用方法和配置,帮助你掌握如何有效地管理和控制日志输出。 首先,了解日志的重要性是至关重要的。日志可以帮助开发者追踪程序运行状态,定位错误,以及进行性能分析。相比于直接使用`...
3. **初始化Log4j**:在Application类的onCreate方法中初始化Log4j,确保在使用日志之前完成配置加载: ```java @Override public void onCreate() { super.onCreate(); Log4jConfig.init(this); } ``` 4. *...
1. 确认当前使用的log4j2版本,如果是在受影响范围内,立即停止使用并准备升级。 2. 下载并部署log4j-2.18.0的更新版本,替换原有的库文件。 3. 配置更新后的log4j2,禁用可能导致问题的JNDI查找功能,增强系统安全...
**log4j-api-2.12.4.jar** 是Log4j 2框架的API模块,它包含了日志记录的基本接口和类,如`Logger`, `Level`, `Appender`, `Layout`等。这些接口和类为应用程序提供了一种与具体实现解耦的方式来进行日志记录。开发者...
这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...