对于log4j,一般常用的只要保存如下的内容为属性文件即可:

 #log4j.rootLogger=DEBUG,A1,R
log4j.rootLogger=INFO,A1,R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender
#log4j.appender.R.File=F:/log4j/log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n #log4j.logger.org.springframework.transaction.interceptor=DEBUG

注:上面的第8行是用在在磁盘上生成一个名称为log.txt的文件,这个路径得自己手动建立

下面作一个简要介绍:

一、Log4j基础 
1. Log4j简介 
  Log4j是Apache的一个开源项目,通过Log4j,我们可以记录程序运行时的出错信息,便于软件开发人员分析错误原因,修正Bug。Log4j也可以充当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。Log4j还可以监视程序运行的情况,周期性的记录到文件中或数据库中,以便日后进行统计分析。

2. Log4j由三种主要的组件组成 
  1)Logger组件 
    记录器组件负责产生日志,并能够对日志进行分类筛选,控制什么样的日志应该被输出。可以同时定义多个记录器,每个记录器有自己的名字,记录器之间通过名字来表明隶属关系(如记录器a.b是a.b.c的父亲)。在Log4j中有一个根记录器(org.apache.log4j.Logger类)永远存在,且不可以通过名字检索或引用,可以通过它的静态方法getRootLogger()方法得到它,而其他的记录器则通过静态方法getLogger(String name)来实例化。 
  2)Appender组件 
    在Log4j中,信息通过Appender组件输出到目的地,包括控制台、文件、GUI组件、远程套接字服务器、JMS、NT事件记录器及远程UNIX Syslog守护进程。如下: 
      org.apache.log4j.ConsoleAppender(控制台), 
      org.apache.log4j.FileAppender(文件), 
      org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), 
      org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), 
      org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 
  3)Layout组件 
    Layout组件负责格式化输出的日志信息,一个Appender只能有一个Layout。Log4j提供的layout有如下几种: 
      org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
      org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
      org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息), 
      org.apache.log4j.xml.XMLLayout(由一系列中log4j.dtd中定义的<log4j:event>元素组件), 
      org.apache.log4j.PatternLayout(可以灵活地指定布局模式,同c语言的printf()一样灵活)

3. 记录器的日志级别 
  记录器的日志级别在org.apache.log4j.Level类中定义,一共有5种可能的级别,从低到高依次是DEBUG,INFO,WARN,ERROR和FATAL。如果一个记录器没有指定日志级别,那么它将从最近的一个指定了级别的祖先继承级别。

三、Log4j示例 
1. 引入Log4j 
  Log4j官方下载地址(这个是2.0版): http://logging.apache.org/log4j/

这个是集中下载的:http://logging.apache.org/

这个是1.0版,一般推荐使用这个http://logging.apache.org/log4j/1.2/download.html

2. log4j.properties

Log4J的属性文件配置:

 ### 定义根记录器日志级别  ###
log4j.rootLogger = debug,stdout,file1,file2 ### 输出到控制台 ###
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.file1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file1.File = logs/log.log
log4j.appender.file1.Append = true
### 输出DEBUG级别以上的日志
log4j.appender.file1.Threshold = DEBUG
log4j.appender.file1.layout = org.apache.log4j.PatternLayout
log4j.appender.file1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 保存异常信息到单独文件 ###
log4j.appender.file2 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file2.File = logs/error.log
log4j.appender.file2.Append = true
### 只输出ERROR级别以上的日志
log4j.appender.file2.Threshold = ERROR
log4j.appender.file2.layout = org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

3. 测试

 package test;

 import org.apache.log4j.Logger;

 public class Test {
private final static Logger logger = Logger.getLogger(Test.class); public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Test Begin!");
logger.debug(" 1. debug ");
logger.info(" 2. info ");
logger.warn(" 3. warn ");
logger.error(" 4. error ");
logger.fatal(" 5. fatal ");
}
}

四、XML文件配置方式

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" configDebug="true">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>
<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
<param name="File" value="logs/error.log"/>
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="FATAL"/>
<param name="LevelMin" value="ERROR"/>
</filter>
</appender>
<!-- info.log文件只输出info信息 -->
<appender name="INFO" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
<param name="File" value="logs/info.log"/>
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="INFO"/>
<param name="LevelMin" value="INFO"/>
</filter>
</appender>
<appender name="WARN" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
<param name="File" value="logs/warn.log"/>
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="WARN"/>
<param name="LevelMin" value="WARN"/>
</filter>
</appender>
<appender name="DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
<param name="File" value="logs/debug.log"/>
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="DEBUG"/>
<param name="LevelMin" value="DEBUG"/>
</filter>
</appender>
<root>
<priority value="DEBUG"/>
<appender-ref ref="DEBUG"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="CONSOLE"/>
</root>
</log4j:configuration>

Log4j的常见用法的更多相关文章

  1. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  2. php中的curl使用入门教程和常见用法实例

    摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...

  3. Guava中Predicate的常见用法

    Guava中Predicate的常见用法 1.  Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...

  4. find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  5. iOS 开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  6. iOS开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  7. [转]EasyUI——常见用法总结

    原文链接: EasyUI——常见用法总结 1. 使用 data-options 来初始化属性. data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我 ...

  8. NSString常见用法总结

    //====================NSStirng 的常见用法==================== -(void)testString { //创建格式化字符串:占位符(由一个%加一个字 ...

  9. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

随机推荐

  1. 在Eclipse中查看JDK类库的源代码

    http://blog.csdn.net/a81895898/article/details/8486802 在Eclipse中查看JDK类库的源代码!!! 设置: 1.点 “window”-> ...

  2. .NET环境配置(二)

    打开IIS服务器   首先在设置程序池 应用程序池 设置  ASP.NET v4.0         ASP.NET v4.0 Classic CLassic.NET AppPool DefaultA ...

  3. HTML5 <meta> 标签属性,所有meta用法都在这里了

    基本标签SEO 优化为移动设备添加 viewportWindows 8其他 禁止数字识自动别为电话号码不让android识别邮箱每 8 秒刷新一次页面移动端的头部标签和meta 基本标签 声明文档使用 ...

  4. 软件工程 speedsnail 冲刺9

    20150313 完成任务:为周五检查做了相关准备,包括稳定性测试,分辨率测试: 遇到问题: 问题1 进入关卡的开始蜗牛会跳一段距离 解决1 没有解决 明日任务: 冲刺结束

  5. c语言学习第四天数据类型1

    int   代表整数,它在内存中占4个字节,二进制的表示方式是占用了三十二位,二进制中只包含0和1,那它的最大值就是全为1,但int是 有符号类型,所以最高位(左边的第一位)要拿出来做符号位,这样就只 ...

  6. 如何验证 jemalloc 优化 Nginx 是否生效

    Jemalloc 源于 Jason Evans 2006年在 BSDcan conference 发表的论文:<A Scalable Concurrent malloc Implementati ...

  7. MySQL下查看用户和建立用户

    启动数据库: [root@server ~]# mysqld_safe & [1] 3289 [root@server ~]# 130913 08:19:58 mysqld_safe Logg ...

  8. Delphi CxGrid 汇总(4)

    1.     CxGrid汇总功能 ① OptionsView-Footer设置为True,显示页脚   ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义 ...

  9. delphi启动 EditLineEnds.ttr 被占用问题

    碰到这个问题我也是无语了,每次关掉Delphi后就不能打开了,折腾了半天,网上的方法也没有搞定.最后,找到这个链接(网页如下所示),下载里面的东西就搞定了.打不开的可以向我要.895569369@qq ...

  10. Python基础 第一天

    编码 #coding=utf-8 函数入口 if __name__== "__main__": 内置方法 type:a=1 type(a) help:import time hel ...