原文:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。

1. 配置文件
Log4J配置文件的基本格式如下:

#配置根Logger
log4j.rootLogger 
=
 
[
level
]
 
,
 appenderName1
,
 appenderName2
,



#配置日志信息输出目的地Appender
log4j.appender.appenderName 
=

fully.qualified.name.of.appender.class 
  log4j.appender.appenderName.option1 
=

value1 
  … 
  log4j.appender.appenderName.optionN 
=

valueN 

#配置日志信息的格式(布局)
log4j.appender.appenderName.layout 
=

fully.qualified.name.of.layout.class 
  log4j.appender.appenderName.layout.option1 
=

value1 
  … 
  log4j.appender.appenderName.layout.optionN 
=
 valueN

其中 [level] 是日志输出级别,共有5级:


FATAL     
0

ERROR     
3

WARN      
4

INFO      
6

DEBUG     
7



Appender

为日志输出目的地,Log4j提供的appender有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:

  %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

2. 在代码中初始化Logger:

1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG.
2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

3. 为不同的 Appender 设置日志输出级别:
当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改AppenderThreshold

就能实现,比如下面的例子:

[配置文件]

log4j.rootLogger
=
debug
,
 stdout
,
 D
,

E

### 输出到控制台 ###
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{ABSOLUTE} %5p %c{
1

}:%L - %m%n

### 输出到日志文件 ###
log4j.appender.D
=

org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
=

logs/log.log
log4j.appender.D.Append
=

true
log4j.appender.D.Threshold
=

DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout
=

org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
=
%-d{yyyy-MM-dd HH:mm:ss} 
[
%t:%r
]
-
[
%p
]

%m%n

### 保存异常信息到单独文件 ###
log4j.appender.D
=

org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
=

logs/error.log ## 异常日志文件名
log4j.appender.D.Append
=

true
log4j.appender.D.Threshold
=

ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.D.layout
=

org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
=
%-d{yyyy-MM-dd HH:mm:ss} 
[
%t:%r
]
-
[
%p
]
 %m%n

[代码中使用]

public
 
class
 TestLog4j

{
    
public
 
static
 
void
 main(String[] args)

{
        PropertyConfigurator.configure(
"
D:/Code/conf/log4j.properties
"

);
        Logger logger 
=
 Logger.getLogger(TestLog4j.
class

);
        logger.debug(
"
debug
"

);
        logger.error(
"
error
"

);
    }

}

运行一下,看看异常信息是不是保存在了一个单独的文件error.log中。

注:

关于spring的log4j配置:

####### spring framework #########
log4j.logger.org.springframework=INFO
log4j.logger.org.springframework.security=INFO
log4j.logger.org.springframework.transaction=INFO
log4j.logger.org.springframework.jms=INFO
log4j.logger.org.springframework.web.client.RestTemplate=INFO
log4j.logger.org.springframework.amqp=INFO log4j.logger.javax.transaction=INFO

Log4j配置(转)的更多相关文章

  1. 使用log4j配置不同文件输出不同内容

    敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...

  2. log4j 配置

    给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件  目录 Src 3.在需要使用输出的类中使用 priva ...

  3. log4j配置日志文件log4j.appender.R.File相对路径方法

    方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...

  4. paip.Log4j配置不起作用的解决

    paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...

  5. Flume学习 & Kafka & Storm 等 & Log4J 配置

    正在学习这篇文章: http://blog.csdn.net/ymh198816/article/details/51998085 和工作中接触的电商.订单.分析,可以结合起来. 开宗明义,这幅图片: ...

  6. Log4j配置全说明

    转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...

  7. 简要log4j配置

    若排版紊乱可查看我的个人博客原文地址 1. 配置效果 下面的log4j日志配置最终能达到的效果是对于全局日志可以根据级别输入到对应级别的日志文件中,注意低级别的日志文件会同时包含高级别的日志信息,例如 ...

  8. log4j日志输出到日志文件中和控制台中 +log4j配置详解

    1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...

  9. 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...

  10. log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息

    log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息 日志信息可以以文件形式显示,也可以在控制台输出,在 log4j.properties 文件设置. 控制台有很多 ...

随机推荐

  1. python学习 (三十二) 异常处理

    1 异常: def exceptionHandling(): try: a = b = d = a / b print(d) except ZeroDivisionError as ex: print ...

  2. 十七 能停止的线程 暴力停止 和 interrupt/return方法

    1:stop: 使用stop() 停止的线程则是非常暴力的. stop() 已经废弃了,因为: 1 如果强制停止则有可能使得一些清理工作得不到完成. 2 对锁定的对象进行了“解锁”,导致数据得不到同步 ...

  3. 5月3日上课笔记-XML解析

    一.XML编程 1.xml编程的两种解析方式 1.1 dom解析 优点:一次加载,多次使用.可以方便的对xml文档进行增删改查 缺点:如果xml文档过大的话,加载的时候会比较占用内存空间比较大,消耗资 ...

  4. MariaDB主从半同步复制详解

    半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay lo ...

  5. mysql where语句中 or 和 and连用注意点

    在mysql中,经常会遇到这样的情况,在写条件语句where时,可能会同时有多个条件的“或”或者“与”,但经常会达不到效果,经百度,本人发现一个where语句中同时出现条件的“与”或者“或的时候”,要 ...

  6. EntityFramework 更新数据库字段的三种方法

    例: 实体类: public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public ...

  7. iframe callback方式文件上传

    1.前端default.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  8. Tomcat官方文档关于数据源配置的内容

    虽然有网上有网友自己总结的文章,但说明得总是不够清晰,还是参考官方文档理解得比较透彻: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html h ...

  9. 装linux双系统

    一般的电脑都是一个盘的,只要分个区给linux就行了,好装.大概可以看看这篇:http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.htm ...

  10. Spring MVC起步

    1.1跟踪Spring MVC的请求 每当用户在Web浏览器中点击链接或提交表单的时候,请求就开始工作了.对请求的工作描述就像是快递投送员.与邮局投递员或FedEx投送员一样,请求会将信息从一个地方带 ...