org.apache.log4j.Logger 详解

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

log4g的更多相关文章

  1. log4g:站在巨人的头上实现一个可配置的Go日志库

    更多精彩博文,欢迎访问我的个人博客 前言 本人Java程序员一枚,眼看着这几年Go的势头不错,本着技多不压身的原则,也随大流慢慢学习.不得不说Go其实跟Java差别还是挺大的,毕竟习惯了面向对象的思想 ...

  2. maven log4g 用法

    <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> & ...

  3. log4g 使用教程

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log ...

  4. 黑马程序员_JavaIO流(三)

    字节流File读写操作 字符流: FileReader FileWriter BufferedReader BufferedWrtier 字节流: FileInputStream FileOutput ...

  5. myeclipse中控制台日志比实际晚8小时解决方法及java日志处理

    今天终于忍不住要解决myeclipse控制台中日志显示比实际晚8小时的问题,开始以为myeclipse编辑器时间问题,后来想想不对,myeclipse控制台打印的是tomcat的日志,随后以为是log ...

  6. MySql单表最大8000W+ 之数据库遇瓶颈记

    前言 昨晚救火到两三点,早上七点多醒来,朦胧中醒来发现电脑还开着,赶紧爬起来看昨晚执行的SQL命令结果.由于昨晚升级了阿里云的RDS,等了将近两个小时 还在 升降级中,早上阿里云那边回复升级过程中出现 ...

  7. Atitit s2018.5 s5 doc list on com pc.docx  v2

    Atitit s2018.5 s5  doc list on com pc.docx  Acc  112237553.docx Acc Acc  112237553.docx Acc baidu ne ...

  8. Atitit s2018.5 s5 doc list on com pc.docx  Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 18821766710 attilax main num.docx Atiitt put post 工具 开发工具dev tool test.docx Atiitt 腾讯图像分类相册管家.docx

    Atitit s2018.5 s5  doc list on com pc.docx  Acc  112237553.docx Acc baidu netdisk.docx Acc csdn 1882 ...

  9. 二、springBoot 整合 mybatis 项目实战

    前言 上一篇文章开始了我们的springboot序篇,我们配置了mysql数据库,但是我们sql语句直接写在controller中并且使用的是jdbcTemplate.项目中肯定不会这样使用,上篇文章 ...

随机推荐

  1. Linux学习 :SPI通讯协议

    SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在E ...

  2. alert弹层无法取消问题解决办法

    最近做H5移动端开发的时候,js代码写了个alert,在Android手机上能正常运行,但是在IOS上运行弹出之后却无法取消掉, 而且页面卡死,点不了任何东西,这种情况是非常不好的,用户体验非常糟糕. ...

  3. 第九篇.bootstrap导航

    创建一个标签式的导航菜单的步骤是: 在ul标签上加上class  nav 再ul标签上加上 class .nav-tabs. 在li标签上加上 active表示激活该项 <ul class=&q ...

  4. oracle中dual的使用

    dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下:1.查看当前用户,可以在 SQL Plus中执行下面语句select ...

  5. sql server 2012提示:评估期已过 的解决办法 附序列号

    sql server 2012提示评估期已过的解决方法: 第一步:进入SQL2012配置工具中的安装中心. 第二步:再进入左侧维护选项界面,然后选择选择版本升级. 第三步:进入输入产品密钥界面,输入相 ...

  6. Fiddler-3 配置Fiddler监听iphone的http/https请求

    电脑端可以通过Fiddler监听手机端的http请求.需要两个步骤:首先配置Fiddler,再配置手机端. 1 配置 Fiddler 允许远程设备连接: 菜单Tools - Telerik Fiddl ...

  7. 每日总结 -----把人家代码干掉了 我恨git

    今天搞了下午git,写完代码commit之后,pull完发现没法push,说是和origin有分支,然后自己查资料又是reset又是rebase的,commit之后发现自己改动的代码几乎没有被提交上去 ...

  8. JS总结 节点

    nodeName 获取节点名称 元素节点:返回标记名称  属性节点:返回属性名称 文本节点:返回文本#text nodeTyle 获取节点类型 元素节点:返回1 属性节点:返回2 文本节点:返回3 n ...

  9. vue吃进去的object已经变了样,不在是原来的!

    直接上代码: class data { public list:number[]; constructor() { this.list=[0,0,0]; } } class methods exten ...

  10. 删除hao123这个恶心的毒瘤

    最近做服务器,好好一个东西莫名其妙的被染上了这个狗皮膏药......然后我就用了各种手段删除,注册表.组策略等等都用上了,却没有丝毫办法.....最后发现的地方特别无语,居然在快捷方式的属性中加上了u ...