log4j简明教程

log4j下载地址:http://logging.apache.org/log4j/1.2/download.html

要学log4j最好的教程还是看官方文档: http://logging.apache.org/log4j/1.2/manual.html
另外一篇比较好的中文教程:http://dev.csdn.net/article/21/21291.shtm
这里只做简单介绍,不多说废话。

1 配置文件

个人举得 log4j 很够easy的在程序用使用,关键在于配置文件。

建立配置文件:mylog.properties,内容如下:

#用来作界面显示的...只显示 INFO 等级的log信息
log4j.rootLogger= debug,mylogAppenderName,mylogFile
# mylogAppenderName 在控制台输出
log4j.appender.mylogAppenderName =org.apache.log4j.ConsoleAppender
# 定义布局类型
log4j.appender.mylogAppenderName.layout=org.apache.log4j.PatternLayout
# 定义输出格式
log4j.appender.mylogAppenderName.layout.ConversionPattern= %-10p [%t] %C.%M(%L) | %m%n

# mylogFile 将日志信息输出到文件
log4j.appender.mylogFile=org.apache.log4j.FileAppender
# 日志文件路径
log4j.appender.mylogFile.File=c:\\example.log
# 定义布局类型
log4j.appender.mylogFile.layout=org.apache.log4j.PatternLayout
# 定义输出格式
log4j.appender.mylogFile.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2 对配置文件的解释

(1) log4j.rootLogger= info,mylogAppenderName,mylogFile

log4j.rootLogger= LEVEL,appenderName1,appenderName2,appenderName3......

其中 LEVEL 指的是 log4j所定义几个等级,他们的优先级如下:

OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL

其中常用的是: ERROR、WARN、INFO、DEBUG

对他们的解释如下:

OFF         是最高等级的,用于关闭所有日志记录。
FATAL    指出每个严重的错误事件将会导致应用程序的退出。
ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。
WARN    表明会出现潜在错误的情形。
INFO       表明 消息在粗粒度级别上突出强调应用程序的运行过程。
DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的。
ALL         是最低等级的,用于打开所有日志记录。

(2) appenderName 指日志信息输出到什么地方。可以同时指定多个输出目的地。主要有如下几种输出目标类型:

更多的类型见:http://logging.apache.org/log4j/1.2/apidocs/index.html


(3) 常用的布局管理器:

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

(4) 布局格式:

全部格式见:
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

其中常用的格式有:

    %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的缩进格式化类似于c语言中的 printf 的格式定义:

    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字符,就从左边交远销出的字符截掉。

3 在代码中使用log4j
TestLog .java

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class TestLog {

    public static void main(String[] args)
    {

        PropertyConfigurator.configure("log4j.properties");
       
        //定义
        Logger logger = Logger.getLogger(TestLog.class);
       
        logger.fatal("这是 fatal 日志信息。");
        logger.error("这是 error 日志信息。");
        logger.warn("这是 warn 日志信息。");
        logger.info("这是 info 日志信息。");
        logger.debug("这是 debug 日志信息。");
       
    }

}

运行的输出结果为:

FATAL      [main] TestLog.main(16) | 这是 fatal 日志信息。
ERROR      [main] TestLog.main(17) | 这是 error 日志信息。
WARN       [main] TestLog.main(18) | 这是 warn 日志信息。
INFO       [main] TestLog.main(19) | 这是 info 日志信息。
DEBUG      [main] TestLog.main(20) | 这是 debug 日志信息。

c://example.log 文件的内容如下:

2008-10-01 04:42:50:FATAL main TestLog - 这是 fatal 日志信息。
2008-10-01 04:42:50:ERROR main TestLog - 这是 error 日志信息。
2008-10-01 04:42:50:WARN main TestLog - 这是 warn 日志信息。
2008-10-01 04:42:50:INFO main TestLog - 这是 info 日志信息。
2008-10-01 04:42:50:DEBUG main TestLog - 这是 debug 日志信息。

另外可修改配置文中的 log4j.rootLogger= debug,mylogAppenderName,mylogFile 改为

log4j.rootLogger= info,mylogAppenderName,mylogFile

在试后输出结果为:

FATAL      [main] TestLog.main(14) | 这是 fatal 日志信息。
ERROR      [main] TestLog.main(15) | 这是 error 日志信息。
WARN       [main] TestLog.main(16) | 这是 warn 日志信息。
INFO       [main] TestLog.main(17) | 这是 info 日志信息。

注意:DEBUG信息没有输出。

原文地址:http://blog.163.com/baiyunping333@126/blog/static/2439447220090311229472/

  1. ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。

  2. DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。

  3. FileAppender 把日志事件写入一个文件

  4. RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。

  5. WriterAppender根据用户的选择把日志事件写入到Writer或者OutputStream。

  6. SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。

  7. SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。

  8. SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。

  9. SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。

  10. TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。

还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。

你可能感兴趣的:(c,log4j,网络,服务器,扩展,平台)