1. 概述

1.1. 背景   
  在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。  
  最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类 来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。

http://logging.apache.org/log4j/ 官网地址

1.2. Log4j 简介

 在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外, Apache 为我们提供了一个强有力的日志操作包 -Log4j 。  
   Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信息输送的目的地是控制台、文件、 GUI 组件、甚至是套接口服 务器、 NT 的事件记录器、 UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。  
  此外,通过 Log4j 其他语言接口,您可以在 C 、 C+ + 、 .Net 、 PL/SQL 程序中使用 Log4j ,其语法和用法与在 Java 程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通 过使用各种第三方扩展,您可以很方便地将 Log4j 集成到 J2EE 、 JINI 甚至是 SNMP 应用中。

2. 一个简单的实例

项目结构:

Java 代码:

  1. package com.coderdream.log4j;
  2. import org.apache.log4j.Logger;
  3. public class HelloLog4j {
  4.     private static Logger logger = Logger.getLogger(HelloLog4j.class);  
  5. public static void main(String[] args) {
  6. //  记录 debug 级别的信息
  7. logger.debug("This is debug message.");
  8. //  记录 info 级别的信息
  9. logger.info("This is info message.");
  10. //  记录 error 级别的信息
  11. logger.error("This is error message.");
  12. }
  13. }

配置文件 log4j.properties:

Properties 代码

# 可以设置级别: debug>info>error

#debug :显示 debug 、 info 、 error

#info :显示 info 、 error

#error :只 error

# 也就是说只显示比大于等于当前级别的信息

log4j.rootLogger=debug,appender1

#log4j.rootLogger=info,appender1

#log4j.rootLogger=error,appender1

# 输出到控制台

log4j.appender.appender1=org.apache.log4j.ConsoleAppender

# 样式为 TTCCLayout

log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

输出结果:

Console 代码

[main] DEBUG com.coderdream.log4j.HelloLog4j - This is debug message.

[main] INFO com.coderdream.log4j.HelloLog4j - This is info message.

[main] ERROR com.coderdream.log4j.HelloLog4j - This is error message.

通过配置文件可知,我们需要配置 3 个方面的内容:

1 、根目录(级别和目的地);

2 、目的地(控制台、文件等等);

3 、输出样式。

下面我们来看看Log4J 的类图:

Logger - 日志写出器 ,供程序员输出日志信息
Appender -
日志目的地 ,把格式化好的日志信息输出到指定的地方去
Layout -
日志格式化器 ,用来把程序员的 logging request 格式化成字符串


2 .
Log4j 基本使用方法
   Log4j 由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式 。日志信息的优先级从高到低有 ERROR 、 WARN 、 INFO 、 DEBUG ,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
    1 、定义配置文件
      其实您也可以完全不使用配置文件,而是在代码中配置 Log4j 环境。但是,使用配置文件将使您的应用程序更加灵活。 Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件(键 = 值 properties 文件)。下面我们介绍使用 Java 特性文件做为配置文件的方法:

   1 . 配置根 Logger ,其语法为:
   log4j.rootLogger = [ level ] , appenderName, appenderName, …
  其中, level 是日志记录的优先级,分为 OFF FATAL ERROR WARN INFO DEBUG ALL 或者您定义的级别。 Log4j 建议只使用四个级别 ,优先级从高到低分别是 ERROR WARN INFO DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了 INFO 级别,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来 。 appenderName 就是指 B 日志信息输出到哪个地方。您可以同时指定多个输出目的地。

   2 )配置日志信息输出目的地 Appender ,其语法为:
   log4j.appender.appenderName = fully.qualified.name.of.appender.class. 其中, Log4j 提供的 appender 有以下几种:
          1.org.apache.log4j.ConsoleAppender (控制台),
          2.org.apache.log4j.FileAppender (文件),
          3.org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
          4.org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个    新的文件)
          5.org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

   3) . 配置日志信息的格式(布局),其语法为:
   log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  其中, Log4j 提供的 layout 有以 e 几种:
          1.org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
          2.org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
          3.org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
          4.org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
   Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息
   %p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
   %r 输出自应用启动到输出该 log 信息耗费的毫秒数
   %c 输出所属的类目,通常就是所在类的全名
   %t 输出产生该日志事件的线程名
   %n 输出一个回车换行符, Windows 平台为 “rn” , 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. 在代码中使用 Log4j
   1. 得到记录器
   使用 Log4j ,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:
   public static Logger getLogger( String name)
   通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。 Name 一般取本类的名字,比如:
   static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
   2. 读取配置文件
  当获得了日志记录器之后,第二步将配置 Log4j 环境,其语法为:
   BasicConfigurator.configure () : 自动快速地使用缺省 Log4j 环境。
   PropertyConfigurator.configure ( String configFilename) :读取使用 Java 的特性文件编写的配置文件。
   DOMConfigurator.configure ( String filename ) :读取 XML 形式的配置文件。
    3. 插入记录信息(格式化日志信息)
  当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
   Logger.debug ( Object message ) ;
   Logger.info ( Object message ) ;
   Logger.warn ( Object message ) ;
   Logger.error ( Object message ) ;

3. 示例 2 ~示例 8

【示例 2 】 输出为文本文件或 HTML 文件

Porperties 代码

  1. # 设置级别:
  2. log4j.rootLogger=debug,appender1
  3. log4j.appender.appender1=org.apache.log4j.FileAppender
  4. # 设置文件输出路径
  5. log4j.appender.appender1.File=c:/Log4JDemo02.html
  6. # 设置文件输出样式
  7. log4j.appender.appender1.layout=org.apac he.log4j.HTMLLayout

示例3 】 输出为文本文件或HTML 文件

Properties 代码

  1. # 设置级别和多个目的地   
  2. log4j.rootLogger=debug,appender1,appender2
  3. # 输出到控制台
  4. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  5. log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
  6. # 输出到文件 ( 这里默认为追加方式 )
  7. log4j.appender.appender2=org.apache.log4j.FileAppender
  8. log4j.appender.appender2.File=c:/Log4JDemo02.html
  9. log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout

示例 4 SimpleLayout 样式

Properties 代码

  1. # 设置级别和目的地
  2. log4j.rootLogger=debug,appender1
  3. # 输出到控制台
  4. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  5. # 设置输出样式
  6. log4j.appender.appender1.layout=org.apache.log4j.SimpleLayout

控制台代码

DEBUG - This is debug message.

INFO - This is info message.

ERROR - This is error message.

【示例5 】 自定义样式

Java 代码

  1. # 设置级别和目的地
  2. log4j.rootLogger=debug,appender1
  3. # 输出到控制台
  4. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  5. # 设置输出样式
  6. log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
  7. # 自定义样式
  8. log4j.appender.appender1.layout.ConversionPattern =%r [%t] [%p] - %c -%l -%m%n

# 自定义样式

# %r 时间 0

# %t 方法名 main

# %p 优先级 DEBUG/INFO/ERROR

# %c 所属类的全名 ( 包括包名 )

# %l 发生的位置,在某个类的某行

# %m 输出代码中指定的讯息,如 log(message) 中的 message

# %n 输出一个换行

log4j.appender.appender1.layout.ConversionPattern =%r [%t] [%p] - %c -%l -%m%n 输出结果:

控制台代码

0 [main] [DEBUG] - com.coderdream.log4j.HelloLog4j

-com.coderdream.log4j.HelloLog4j.main(HelloLog4j.java:16 ) -This is debug message.

31 [main] [INFO] - com.coderdream.log4j.HelloLog4j -com.coderdream.log4j.HelloLog4j.main(HelloLog4j.java:18 ) -This is info message.

31 [main] [ERROR] - com.coderdream.log4j.HelloLog4j

-com.coderdream.log4j.HelloLog4j.main(HelloLog4j.java:20 ) -This is error message.

【示例6 】 多目的地、自定义样式

Properties 代码

  1. # 设置级别和目的地
  2. log4j.rootLogger=debug,appender1,appender2
  3. # 输出到控制台
  4. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  5. # 设置输出样式
  6. log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m%n
  8. # 输出到文件 ( 这里默认为追加方式 )
  9. log4j.appender.appender2=org.apache.log4j.FileAppender
  10. # 设置文件输出路径
  11. log4j.appender.appender2.File=c:/Log4JDemo06.log
  12. # 设置文件输出样式
  13. log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n

【示例 7 【企业应用】设置 特定包的级别和目的地

先增加一个包,新建一个类:

Java 代码

  1. package com.coderdream.log4jDao;
  2. import org.apache.log4j.Logger;
  3. public class HelloDao {
  4. private static Logger logger = Logger.getLogger(HelloDao.class);
  5. public static void main(String[] args) {
  6. //  记录 debug 级别的信息
  7. logger.debug("This is debug message from Dao.");
  8. //  记录 info 级别的信息
  9. logger.info("This is info message from Dao.");
  10. //  记录 error 级别的信息
  11. logger.error("This is error message from Dao.");
  12. }
  13. }

如果这个类作为基类,如 J2EE 中的 BaseDao 、 BaseAction 、 BaseService 等等,则我们可以将各层的日志信息分类输出到各个文件。

Properties 代码

  1. # 省略根,只设置特定包的级别和目的地  
  2. log4j.logger.com.coderdream.log4j =debug,appender1
  3. log4j.logger.com.coderdream.log4jDao =info,appender1,appender2
  4. # 输出到控制台
  5. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  6. log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.appender1.layout.ConversionPattern =[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m%n
  8. # 输出到文件 ( 这里默认为追加方式 )
  9. log4j.appender.appender2=org.apache.log4j.FileAppender
  10. log4j.appender.appender2.File=c:/Log4JDemo07_Dao.log
  11. log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
  12. log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n

【示例 8 log4j.xml 的配置方式

Xml 代码

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4. <appender name="appender1"
  5. class="org.apache.log4j.RollingFileAppender">
  6. <param name="File" value="logfile08.html" />
  7. <param name="MaxFileSize" value="1MB" />
  8. <param name="MaxBackupIndex" value="5" />
  9. <layout class="org.apache.log4j.HTMLLayout">
  10. </layout>
  11. </appender>
  12. <root>
  13. <level value="debug" />
  14. <appender-ref ref="appender1" />
  15. </root>
  16. </log4j:configuration>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="appender1"

class="org.apache.log4j.RollingFileAppender">

<param name="File" value="logfile08.html" />

<param name="MaxFileSize" value="1MB" />

<param name="MaxBackupIndex" value="5" />

<layout class="org.apache.log4j.HTMLLayout">

</layout>

</appender>

<root>

<level value="debug" />

<appender-ref ref="appender1" />

</root>

</log4j:configuration>

特别说明:

为了提高效率,我们可以在写日志前增加判断:

Java 代码

  1. //  记录 debug 级别的信息
  2. if (logger.isDebugEnabled ()) {
  3. logger.debug("This is debug message from Dao.");
  4. }
  5. //  记录 info 级别的信息
  6. if (logger.isInfoEnabled ()) {
  7. logger.info("This is info message from Dao.");
  8. }
  9. //  记录 error 级别的信息
  10. logger.error("This is error message from Dao.");

 

另附一些详细东西:

1.java 中的应用

             Logger.debug(Object message);// 调试信息
          Logger.info(Object message);// 一般信息
          Logger.warn(Object message);// 警告信息
          Logger.error(Object message);// 错误信息
          Logger.fatal(Object message);// 致命错误信息

2 、配置根 Logger ,其语法为:
   log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
         level : 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者您定义的级别。 Log4j 建议只使用四个级别,优 先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了 INFO 级别,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。
        appenderName: 就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
   例如: log4j.rootLogger = info,A1,B2,C3   
   3 、配置日志信息输出目的地,其语法为:
     log4j.appender.appenderName = fully.qualified.name.of.appender.class  //
     "fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个:
          1.org.apache.log4j.ConsoleAppender (控制台)
          2.org.apache.log4j.FileAppender (文件)
          3.org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
          4.org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件)
          5.org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
             1.ConsoleAppender 选项
                    Threshold=WARN: 指定日志消息的输出最低层次。
                    ImmediateFlush=true: 默认值是 true, 意谓着所有的消息都会被立即输出。
                    Target=System.err :默认情况下是: System.out, 指定输出控制台
              2.FileAppender 选项
                    Threshold=WARN: 指定日志消息的输出最低层次。
                    ImmediateFlush=true: 默认值是 true, 意谓着所有的消息都会被立即输出。
                    File=mylog.txt: 指定消息输出到 mylog.txt 文件。
                    Append=false: 默认值是 true, 即将消息增加到指定文件中, false 指将消息覆盖指定的文件内容。
            3.DailyRollingFileAppender 选项
                    Threshold=WARN: 指定日志消息的输出最低层次。
                    ImmediateFlush=true: 默认值是 true, 意谓着所有的消息都会被立即输出。
                    File=mylog.txt: 指定消息输出到 mylog.txt 文件。
                    Append=false: 默认值是 true, 即将消息增加到指定文件中, false 指将消息覆盖指定的文件内容。
                    DatePattern='.'yyyy-ww: 每周滚动一次文件 ,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
                    1)'.'yyyy-MM: 每月
                    2)'.'yyyy-ww: 每周  
                    3)'.'yyyy-MM-dd: 每天
                    4)'.'yyyy-MM-dd-a: 每天两次
                    5)'.'yyyy-MM-dd-HH: 每小时
                    6)'.'yyyy-MM-dd-HH-mm: 每分钟
            4.RollingFileAppender 选项
                    Threshold=WARN: 指定日志消息的输出最低层次。
                    ImmediateFlush=true: 默认值是 true, 意谓着所有的消息都会被立即输出。
                    File=mylog.txt: 指定消息输出到 mylog.txt 文件。
                    Append=false: 默认值是 true, 即将消息增加到指定文件中, false 指将消息覆盖指定的文件内容。
                    MaxFileSize=100KB: 后缀可以是 KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到 mylog.log.1 文件。
                    MaxBackupIndex=2: 指定可以产生的滚动文件的最大数。

实际应用:
   log4j.appender.A1=org.apache.log4j.ConsoleAppender // 这里指定了日志输出的第一个位置 A1 是控制台 ConsoleAppender   
   3 、配置日志信息的格式,其语法为:
   A. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
              "fully.qualified.name.of.layout.class" 可以指定下面 4 个格式中的一个:
               1.org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
          2.org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
          3.org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
          4.org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
                   1.HTMLLayout 选项
                      LocationInfo=true: 默认值是 false, 输出 java 文件名称和行号
                      Title=my app file: 默认值是 Log4J Log Messages.
                   2.PatternLayout 选项
                      ConversionPattern=%m%n : 指定怎样格式化指定的消息。
                   3.XMLLayout  选项
                      LocationInfo=true: 默认值是 false, 输出 java 文件和行号
   实际应用:
      log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
           这里需要说明的就是日志信息格式中几个符号所代表的含义:
            - X 号 : X 信息输出时左对齐;
                   %p: 输出日志信息优先级,即 DEBUG , INFO , WARN , ERROR , FATAL,
                   %d: 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
                   %r: 输出自应用启动到输出该 log 信息耗费的毫秒数
                   %c: 输出日志信息所属的类目,通常就是所在类的全名
                   %t: 输出产生该日志事件的线程名
                   %l: 输出日志事件的发生位置,相当于 %C.%M(%F:%L) 的组合 , 包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)
                   %x: 输出和当前线程相关联的 NDC( 嵌套诊断环境 ), 尤其用到像 java servlets 这样的多客户多线程的应用中。
                   %%: 输出一个 "%" 字符
                   %F: 输出日志消息产生时所在的文件名称
                   %L: 输出代码中的行号
                   %m: 输出代码中指定的消息 , 产生的日志具体信息
                   %n: 输出一个回车换行符, Windows 平台为 "/r/n" , Unix 平台为 "/n" 输出日志信息换行
            可以在 % 与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
                     1)%20c :指定输出 category 的名称,最小的宽度是 20 ,如果 category 的名称小于 20 的话,默认的情况下右对齐。
                     2)%-20c: 指定输出 category 的名称,最小的宽度是 20 ,如果 category 的名称小于 20 的话, "-" 号指定左对齐。
                     3)%.30c: 指定输出 category 的名称,最大的宽度是 30 ,如果 category 的名称大于 30 的话,就会将左边多出的字符截掉,但小于 30 的话也不会有空格。
                     4)%20.30c: 如果 category 的名称小于 20 就补空格,并且右对齐,如果其名称长于 30 字符,就从左边交远销出的字符截掉。

  这里上面三个步骤是对前面 Log4j 组件说明的一个简化;下面给出一个具体配置例子,在程序中可以参照执行:
   log4j.rootLogger=INFO,A1 , B2
   log4j.appender.A1=org.apache.log4j.ConsoleAppender
   log4j.appender.A1.layout=org.apache.log4j.PatternLayout
   log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
      
      4. # 当输出信息于回滚文件时

log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender   // 指定以文件的方式输出日志
           log4j.appender.ROLLING_FILE.Threshold=ERROR 
           log4j.appender.ROLLING_FILE.File=rolling.log  // 文件位置 , 也可以用变量 ${java.home} 、 rolling.log
           log4j.appender.ROLLING_FILE.Append=true 
           log4j.appender.ROLLING_FILE.MaxFileSize=10KB  // 文件最大尺寸
           log4j.appender.ROLLING_FILE.MaxBackupIndex=1  // 备份数
           log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
           log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n    

  5. Log4j 比较全面的配置

LOG4J 的配置之简单使它遍及于越来越多的应用中了: Log4J 配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了,

log4j.rootLogger=DEBUG,CONSOLE,A1,im
 log4j.addivity.org.apache=true

 # 应用于控制台

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.Threshold=DEBUG
 log4j.appender.CONSOLE.Target=System.out
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

 # 应用于文件

log4j.appender.FILE=org.apache.log4j.FileAppender
 log4j.appender.FILE.File=file.log
 log4j.appender.FILE.Append=false
 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 # Use this layout for LogFactor 5 analysis

 # 应用于文件回滚

log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
 log4j.appender.ROLLING_FILE.Threshold=ERROR
 log4j.appender.ROLLING_FILE.File=rolling.log  // 文件位置 , 也可以用变量 ${java.home} 、 rolling.log
 log4j.appender.ROLLING_FILE.Append=true       //true: 添加   false: 覆盖
 log4j.appender.ROLLING_FILE.MaxFileSize=10KB   // 文件最大尺寸
 log4j.appender.ROLLING_FILE.MaxBackupIndex=1  // 备份数
 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 # 应用于 socket
 log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
 log4j.appender.SOCKET.RemoteHost=localhost
 log4j.appender.SOCKET.Port=5001
 log4j.appender.SOCKET.LocationInfo=true
 # Set up for Log Facter 5
 log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
 log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
 # Log Factor 5 Appender
 log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
 log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

 # 发送日志给邮件

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
 log4j.appender.MAIL.Threshold=FATAL
 log4j.appender.MAIL.BufferSize=10
 www.wuset.com ">log4j.appender.MAIL.From=web@www.wuset.com
 log4j.appender.MAIL.SMTPHost=www.wusetu.com
 log4j.appender.MAIL.Subject=Log4J Message
 www.wusetu.com ">log4j.appender.MAIL.To=web@www.wusetu.com
 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
 log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

 # 用于数据库
 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
 log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
 log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
 log4j.appender.DATABASE.user=root
 log4j.appender.DATABASE.password=
 log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
 log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
 log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.A1.File=SampleMessages.log4j
 log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
 log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

# 自定义 Appender

log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

log4j.appender.im.host = mail.cybercorlin.net
 log4j.appender.im.username = username
 log4j.appender.im.password = password
 log4j.appender.im.recipient = corlin@cybercorlin.net

log4j.appender.im.layout=org.apache.log4j.PatternLayout
 log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

转载于:https://www.cnblogs.com/jiaguozhilian/p/5819646.html

org.apache.log4j.Logger详解相关推荐

  1. java logger 格式_org.apache.log4j.Logger详解

    1.概述 1.1.背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环 ...

  2. stone 的 log4j配置详解

    stone 的 log4j配置详解 Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过 ...

  3. log4j配置详解(非常详细转载)

    转载:http://www.360doc.com/content/17/0824/16/46744981_681796916.shtml Log4J的配置文件(Configuration File)就 ...

  4. Log4J使用详解(整理)

    1. Log4j是什么? Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Sys ...

  5. log4j配置详解以及模板

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

  6. log4j配置详解及日志等级设置

    官方网址: http://logging.apache.org/log4j/1.2/ 参考:http://blog.csdn.net/maxracer/article/details/7920997 ...

  7. Apache Hadoop版本详解

    由doop版本混乱多变,因此,Hadoop的版本选择问题一直令很多初级用户苦恼.本文总结了ApacheHadoop和Cloudera Hadoop的版本衍化过程,并给出了选择Hadoop版本的一些建议 ...

  8. xp系统本地服务器环境配置,Windows XP安装Apache环境图文详解Windows服务器操作系统 -电脑资料...

    本文章来简单的介绍Windows XP安装Apache环境图文方法,有需要了解的朋友可参考参考, 双击 apache_2.2.8-win32-x86-no_ssl.msi 文件,开始安装 Apache ...

  9. java中log4j的详解(转)

    阅读: 76 评论: 0 作者: over 发表于 2009-11-25 13:21 原文链接 详细讲解Java中log4j的使用方法 1.Log4j是什么? Log4j可以帮助调试(有时候debug ...

最新文章

  1. LVM逻辑卷创建管理
  2. 统计学习方法(九)EM算法及其推广
  3. 计算机函数公式中怎么合并合并,Excel用函数和公式瞬间实现把表格全部合并到一个表中去...
  4. java 实现微博,QQ联合登录
  5. Java 字符串匹配的KMP算法
  6. AIX操作系统基本命令
  7. Nagios 监控系统架构
  8. Windows域控设置 AD域策略屏蔽端口 禁用端口【全域策略生效】
  9. 为热门项目 若依(ruoyi) 添加flyway,自动管理数据库版本
  10. PXE+kickstart 无人值守安装CentOS 6
  11. 在FreeBSD 用户空间与内核空间使用内存共享
  12. 语音识别之——mfcc什么是汉明窗,为什么加汉明窗
  13. 抖抖.....抖个不停的伺服电机——转动惯量匹配技术及资料分享
  14. iOS 系统分享功能
  15. 万字长文带你彻底搞懂什么是 DevOps
  16. 我爱淘二次冲刺阶段2
  17. 鸿蒙珠融入体内,逍遥至尊之诸天逍遥
  18. 计算机英语教学教案模板,英语教学设计模板
  19. nmap架构图_Nmap扫描教程之Nmap基础知识
  20. Flutter学习日记之使用路由进行页面切换

热门文章

  1. Linux整合Apache和SVN
  2. 【WPF】鼠标拖拽功能DragOver和Drop
  3. webpack学习笔记
  4. 把本地txt文件导入到内表中
  5. struts tags 学习
  6. RichText设置高亮 (未完)
  7. 2011清华MBA备考全记录
  8. 转载 什么叫真学习 什么叫假学习
  9. 移动硬盘为什么不能安全弹出
  10. 18不使用委托实现能自动侦测车距的智能汽车