- 浏览: 308512 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tsyouaschen:
是的,,写反了,多谢提醒
IOS常用CGRect的交错,边缘,中心的检测 -
乐章伦:
为什么我写的action.result.msg 也为空呢,我实 ...
Ext学习中,遇到的问题真不少。其中一个action.result.msg为空 -
HUAN153666:
CGRectGetMaxY和CGRectGetMinY写反了
IOS常用CGRect的交错,边缘,中心的检测 -
ajxjwha:
boundry这个是哪里来的?
利用UIImage的NSData上传多表单到指定服务器 NSMutableURLRequest -
yizhl:
就是 压根不可以。。大哥,你没测试吧。。⊙﹏⊙b汗
兼容IE、FireFox等跨浏览器播放背景音乐 html
我的Log4j文件
我的程序中用到的log文件动态的保存在当前web的log目录下:
#设置级别和目的地
log4j.rootLogger=DEBUG,A1
#输出到指定文件
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
#文件路径
log4j.appender.A1.file=${webappRoot}/logs/log4j.log
log4j.appender.A1.DatePattern=yyyy-MM-dd'.log'
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# 自定义样式
# %r 时间 0
# %t 方法名 main
# %p 优先级 DEBUG/INFO?ERROR
# %c 所属类的全名(包括包名)
# %l 发生的位置,在某个类的某行
# %m 输出代码中指定的讯息,入log(message)中的messagte
# %n 输出一个换行
log4j.appender.A1.layout.ConversionPattern=%r [%t] [%p] - %c -%l -%m%n
以下是转载: http://hi.baidu.com/dearfenix/blog/item/52e63d86b89d483b67096eda.html
背景
对于有经验的开发者来说,日志记录的重要性显而易见。例如程序中的异常处理和安 全性都依赖于Logging的功能来帮助履行它们的指责。应用程序中的日志记录主要基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他 应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。经验表明日志记 录是开发周期中的重要组成部分。
最简单的做法就是在代码中嵌入许多的打印语句,但是这样打印语句会充斥代码的主体,显然不是一个好方法。因此,使用成熟的框架例如Log4j,则会更具灵活性。
Log4j简介
Log4j 框架是用 Java 语言编写的标准日志记录框架。作为 Jakarta 项目的一部分,它在 Apache 软件许可证(Apache Software License)下分发,以速度和灵活性为中心概念:Log4j 环境是完全可配置的,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、 UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
Log4j由三个重要的部件构成:记录器(Loggers)、输出源(Appenders)和布局(Layouts)。
记录器按照布局中指定的格式把日志信息写入一个或多个输出源。输出源可以是控制台、文本文件、XML文件或Socket,甚至还可以把信息写入到Windows事件日志或通过电子邮件发送。我们可以通过配置文件来部署这些组件。
其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。本文从描述 log4j 体系结构的主要组件着手。然后是描述基本用法和配置的简单示例。
定义配置文件
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:
一、 配置记录器。
Log4j允许程序员定义多个记录器,每个记录器有自己的名字。但有一个记录器叫根记录器,它永远存在,且不能通过名字检索或引用,在配置文件中,可以如下定义根记录器:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
Level是记录器的级别,它是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别:ERROR、WARN、INFO、DEBUG:
DEBUG < INFO < WARN < ERROR < FATAL
右边的级别比左边的高。如果一条log信息的级别,大于等于记录器的级别值,那么记录器就会记录它。例如level被设置为INFO级别,那么应用程序中所有的DEBUG的日志信息将不被打印出来。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
appenderName是输出源的名字,它指定日志信息输出到哪个地方。您可以为一个记录器指定多个输出源。
在一些配置文件中,你可能会看到下面的语句:
log4j.rootCategory = [ level ] , appenderName, appenderName, …
在早期的Log4j版本中,org.apache.Category实现了记录器的功能,为了提高向后兼容 性,Logger扩展了Category,因此rootCategory和rootLogger是可以互换的,但最后Category将从类库中删除,因 此请使用Logger类。
除了根记录器之外,log4j允许程序员定义多个记录器,每个记录器有自己的名字:
log4j.logger.loggerName = [ level ] , appenderName, appenderName, …
在Log4J中Logger是具有层次关系的,Log4j支持配置的记录器之间的“父子关系”,记录器之间 通过名字来表明隶属关系(或家族关系),它们有一个共同的根,位于最上层,其它Logger遵循类似包的层次:记录器a.b,与记录器a.b.c之间是父 子关系,而记录器a与a.b.c之间是祖先与后代的关系。例如:
static Logger root = Logger.getRootLogger();
static Logger log1 = Logger.getLogger("cc");
static Logger log2 = Logger.getLogger("cc.ejb");
static Logger log3 = Logger.getLogger("cc.ejb.my.TestApp");
log4j.logger.com.foo=WARN
package com.foo; class Bar{ static Logger log=Logger.getLogger(bar.Class.getName()); ..... }
由于记录器com.foo.Bar 没有指定的级别,它从com.foo(在配置文件中其级别设置成WARN) 继承级别。并且这样我们就能方便的从大量log信息中判断出它们各自的来源。当然了,这不是硬性规定的,实际上Log4j没有对设置记录器的实例名做什么 限制,程序员可以根据自己的喜好随意定义。
二、日志信息输出源Appender
log4j 还允许日志记录请求打印到多个输出目的地,按 log4j 的叫法是输出源。一个记录器可以有多个输出源。一条log信息如果可被这个记录器处理,则该记录器会把这条信息送往每个它所拥有的输出源,以及层次结构中 更高级的输出源。例如,根记录器以控制台作为输出源,则所有可被纪录的日志都将至少打印到控制台。
配置日志信息输出源,其语法为:
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(将日志信息以流格式发送到任意指定的地方)
- org.apache.log4j.SocketAppender (Socket)
- org.apache.log4j.NtEventLogAppender (NT的Event Log)
- org.apache.log4j.JMSAppender (电子邮件)
请注意,可以通过覆盖缺省行为,这样就不再附加累积的输出源:
log4j.additivity.loggerName=false
注意,不要把一个输出源附加到多个记录器上,否则会得到“Attempted to append to closed appender named xxx”的信息。
三、配置日志信息的格式(布局),其语法为:
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(包含日志产生的时间、线程、类别等等信息)
如果采用了PatternLayout, 则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)
四、例子
下面是一个完整的Log4j配置文件,这个配置文件指定了两个输出源stdout和R。前 者把日志信息输出到控制台,后者是一个轮转日志文件。最大的文件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把example.log 重命名为example.log.1,然后重建一个新的example.log文件,依次轮转。
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.FileAppender log4j.appender.stdout.File=System.out log4j.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%n
log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.cc.ejb.my=error,out log4j.appender.out=org.apache.log4j.ConsoleAppender log4j.appender.out.layout=org.apache.log4j.PatternLayout log4j.appender.out.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.cc.ejb.my.son=debug log4j.additivity.cc.ejb.my.son=false
在代码中使用Log4j
一、得到记录器
使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:
public static Logger getLogger( String name)
通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:
static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
二、读取配置文件
当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:
//自动快速地使用缺省Log4j环境。 BasicConfigurator.configure (); //读取使用Java的特性文件编写的配置文件 PropertyConfigurator.configure ( String configFilename); //读取XML形式的配置文件 DOMConfigurator.configure ( String filename );
三、插入记录信息(格式化日志信息)
当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
四、例子
我们通过下面这个简单的例子,来演示在程序如何使用Log4j,您可以修改配置文件以得到不同日志信息。
package cc.ejb.my; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import my.son.Foo; public class TestApp {
static Logger logger=Logger.getLogger(TestApp.class.getName());
public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); logger.info("Applcaiton Starts"); logger.warn("Bar Starts"); Bar bar=new Bar(); logger.error("Bar Errors"); bar.doIt(); logger.warn("Bar Exits"); logger.info("Foo Starts"); Foo foo=new Foo(); logger.error("Foo Errors"); foo.doit(); logger.warn("Foo exits "); logger.info("Applcaition Exits"); }
}
class Bar { static Logger logger = Logger.getLogger(Bar.class.getName()); public void doIt() { logger.debug("Did it again!"); } }
package cc.ejb.my.son;
import org.apache.log4j.Logger;
public class Foo { private Logger log=Logger.getLogger(Foo.class.getName()); public Foo() { log.info("Foo Initialzie"); } public void doit() { log.debug("Do it in Foo"); }
}
发表评论
-
div居中对齐
2010-09-12 11:14 1414<!DOCTYPE html PUBLIC " ... -
SQL模板简单实用
2010-06-01 07:38 1226import java.sql.Connection;impo ... -
servlet生成验证码--非常的简单
2010-05-05 13:58 985import java.awt.Color; import ... -
struts2的Validator验证框架
2010-05-04 22:25 4994test类: import com.opensymphon ... -
java.lang.RuntimeException: Invalid action class configuration that references a
2010-05-04 16:58 7485java.lang.RuntimeException: Inv ... -
HibernateDaoSupport和 HibernateTemplate的选择问题!
2010-04-24 16:35 4670今天学习了一个spring和Hibernate访问Dao, ... -
Timer计时器的使用
2010-03-29 11:55 1485最近在看到一个Timer ... -
(搜藏)更改struts2的访问后缀名.action为.do或者其他的
2010-03-18 14:12 4768设置Struts 2处理的请求后缀及Action调用 1、在 ... -
(搜藏)比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
2010-03-18 11:26 1398Matt通过采访这些框架的 ... -
Java Socket网络编程初级入门(转载)
2010-03-15 16:26 1039事实上网络编程简单的 ... -
Hibernate配置c3p0的hibernate.cfg.xml文件
2010-03-05 13:36 2517<?xml version='1.0' encoding ... -
搜藏一下hibernate.cfg.xml详解
2010-03-05 11:19 1400hibernate.cfg.xml文件详解 <!-- ... -
完全数计算
2010-03-01 21:43 918//完全数计算 public static void dis ... -
Java取余运算(转)
2010-02-28 10:34 2790取余运算符是“%”它是一个双目运算符,它的操作数通常是正整数也 ... -
struts2整合spring出现奇怪的问题
2010-02-08 18:37 1163严重: Exception starting filter s ... -
Java的SuppressWarnings
2010-02-08 10:42 2632有时候使用Myeclipse总是出现 黄色的警告,看起来 ... -
Spring的xml开头的<beans>代码
2010-02-05 17:11 1758经常忘记spring的头部如何编写,老是要去google查找比 ... -
common-fileupload的获得表单中的数据
2010-02-04 17:24 1898检查表单域是否为普通表单,直接用request.getPara ... -
读取Excel,使用流的方式--速度很慢
2010-02-03 10:34 4452import java.io.FileInputStream; ... -
Ext学习中,遇到的问题真不少。其中一个action.result.msg为空
2010-02-02 14:56 4414Ext.onReady(function(){ Ext ...
相关推荐
本文将深入探讨log4j的配置以及配置文件的详解。** 首先,我们要理解什么是`log4j.properties`文件。这是log4j框架的配置文件,使用Java Properties格式,用于定义日志输出的行为。主要包括以下几个核心部分: 1. ...
Log4j 在 SSM 整合中的配置详解 Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM...
### log4j配置文件详解 #### 一、日志记录器简介与日志级别 **日志记录器**(Logger)作为日志处理系统的核心组件,在log4j中扮演着关键角色。它负责接收应用程序产生的日志信息,并根据配置决定是否记录以及如何...
在SpringBoot项目中配置Log4j和Log4j2,主要是通过添加依赖、编写日志配置文件以及更新SpringBoot的配置来完成。这两个日志框架都提供了丰富的功能,可以根据实际需求选择使用。通过合理配置,我们可以确保日志系统...
#### 二、Log4j配置文件格式详解 Log4j配置文件的基本格式如下: ```properties # 配置根Logger log4j.rootLogger=[level],appenderName1,appenderName2,... # 配置日志信息输出目的地Appender log4j.appender....
以上内容详细介绍了如何使用Java特性文件配置Log4j,以及如何配置不同的Appender以满足不同的日志输出需求。通过这些配置,开发者可以轻松控制应用程序的日志输出等级和输出目的地,从而更好地管理和监控应用程序的...
### Log4J 全能配置文件详解 #### 一、概述 Log4J是一款非常流行的Java日志框架,被广泛应用于各种规模的应用程序中。它提供了灵活的日志记录机制,可以将日志输出到不同的目的地,如控制台、文件、数据库等,并且...
Log4j 配置文件说明 Log4j 是一种流行的日志记录工具,用于记录和管理应用程序中的日志信息。配置文件是 Log4j 的核心组件之一,通过配置文件可以控制日志记录的级别、输出目的地和格式。在本文中,我们将详细介绍 ...
Log4j 是一个广泛使用的...正确配置Log4j.properties文件能够帮助开发者更好地管理和监控应用程序的运行状态,通过调整日志级别和输出方式,可以在开发、测试和生产环境中获得合适的日志信息,从而提升问题排查效率。
### Tomcat 下的 Log4j 日志配置详解 在日常的 Web 开发中,日志记录对于调试问题、监控系统状态以及后期维护来说至关重要。在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发...
### log4j.properties配置文件详解 #### 一、概述 `log4j.properties`是Apache Log4j框架中用于配置日志记录行为的核心文件之一。通过这个文件,开发者可以定义日志消息的输出方式(例如控制台或文件)、日志级别...
通过对Log4j的配置文件进行详细的解析,我们可以了解到如何灵活地配置Log4j来满足不同应用场景的需求。合理的日志配置不仅可以帮助开发者更好地追踪问题,还可以提高系统的可维护性和扩展性。希望本文能帮助初学者...
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn". 系统选择配置文件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json...
### Log4j配置与加载方法详解 Log4j是一款由Apache出品的日志记录工具,它提供了灵活的日志级别控制和多样化的日志输出...开发者应根据具体的应用环境和日志管理策略,合理配置log4j,以提升应用的稳定性和可维护性。
### Log4j 使用详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,通过使用 Log4j,开发者能够控制日志信息的输出等级及去向,从而更加灵活地处理日志信息。它具有强大的功能,简单的配置,并且能够支持...
### 常用log4j配置详解 #### log4j简介 Log4j是一个开源的日志框架,由Apache Software Foundation开发。它允许开发者通过简单的配置文件来定义日志的输出等级、输出目的地以及日志信息的格式等。这极大地提高了...
在压缩包中,还包含了一份名为`log4j.properties`的配置文件。这是Log4j使用的一种配置格式,基于Java Properties格式。配置文件决定了日志信息如何输出、输出到哪里,以及日志的级别等关键设置。 **三、Log4j配置...
log4j 配置文件详解 log4j 配置文件是 Java 语言中使用 Log4j 日志记录工具的核心配置文件,用于设置日志记录的级别、输出目的地、日志输出格式等。下面是 log4j 配置文件的详解。 Logger 是 log4j 配置文件中的...
### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...