`

log4j 自定义 appender

阅读更多

如何使用Log4j?

1、 Log4j是什么?

  Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧: http://jakarta.apache.org/log4j 。

 

2、Log4j的概念

   Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远 存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。

   Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。

   Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。

   Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的 级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。

 

3、Log4j的配置文件

  虽然可以不用配置文件,而在程序中实现配置,但这种方法在如今的系统开发中显然是不可取的,能采用配置文件的地方一定一定要用配置文件。Log4j支持两 种格式的配置文件:XML格式和Java的property格式,本人更喜欢后者,首先看一个简单的例子吧,如下:

 

  log4j.rootLogger=debug, stdout, R

  log4j.appender.stdout=org.apache.log4j.ConsoleAppender

  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

 

  # Pattern to output the caller's file name and line number.

  log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

 

  log4j.appender.R=org.apache.log4j.RollingFileAppender

  log4j.appender.R.File=example.log

  log4j.appender.R.MaxFileSize= 100KB

 

  # Keep one backup file

  log4j.appender.R.MaxBackupIndex=1

 

  log4j.appender.R.layout=org.apache.log4j.PatternLayout

  log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n         

 

  首先,是设置root,格式为 log4j.rootLogger=[level],appenderName, ...,其中level就是设置需要输出信息的级别,后面是appender的输出的目的地,appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 配置日志信息输出目的地Appender,其语法为

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

  log4j.appender.appenderName.option1 = value1

  ...

  log4j.appender.appenderName.option = valueN 

Log4j提供的appender有以下几种:

  org.apache.log4j.ConsoleAppender(控制台)

  org.apache.log4j.FileAppender(文件)

  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)

  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置日志信息的格式(布局),其语法为:

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

  log4j.appender.appenderName.layout.option1 = value1

  ....

  log4j.appender.appenderName.layout.option = valueN 

Log4j提供的layout有以下几种:

  org.apache.log4j.HTMLLayout(以HTML表格形式布局),

  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 

 

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %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)

 

 

关于自定义appender的实现,spring在mongo模块提供一个向mongo中写日志的模块

简要配置如下:

#define level/appender

#定义输出级别和目的地

log4j.rootCategory=info,stdout

 

log4j.appender.stdout=org.springframework.data.mongodb.log4j.MongoLog4jAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.appender.stdout.host = 127.0.0.1

log4j.appender.stdout.port = 27017

log4j.appender.stdout.database = logs

log4j.appender.stdout.collectionPattern = %X{year}%X{month}

log4j.appender.stdout.applicationId = my.application

log4j.appender.stdout.warnOrHigherWriteConcern = FSYNC_SAFE

 

github  源码地址 :

https://github.com/spring-projects/spring-data-mongodb

分享到:
评论

相关推荐

    log4j日志驱动包

    #自定义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 = ...

    log4j使用实战

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender INFO是日志记录的最低等级,必须写,它和比它高的等级会进入日志,如WARN、ERROR、FATAL、OFF。 关于8个日志等级,参考:...

    log4j参考手册

    1 Log4J简介 3 2 Log4J实现 3 2.1 Log4J配置 3 2.2 Log4J的类图 4 2.3 日志级别 4 2.4 配置Logger组件 4 2.5 配置Appender组件 5 2.6 配置Layout组件 6 2.7 日志文件的名称 7 ...3.7 自定义Appender 10

    oohlalog_grails:用于 log4j Appender 的 OohLaLog Grails 插件

    Grails OohLaLog 插件添加了一个 log4j appender 来将流量转发到 oohlalog api 服务。 这允许其用户跨多个服务器聚合日志、设置警报、自定义计数器并实时监控他们的应用程序。 Log4J 附加程序 修改您的 Config....

    NagiosAppender:log4j 支持原生 nagios (nsca) 集成-开源

    该项目包含一个用于 log4j 的自定义 appender,适用于对使用 log4j 架构通过 Nagios nsca 服务器将消息推送到 Nagios 感兴趣的系统管理员和/或开发人员。 2.0.0 版支持异步消息传递、可调超时和用于重新传递支持的...

    java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径,下面看一个示例吧

    java日志框架视频教程

    自定义Logger章节四:JCL1. 快速入门2. 原理解析章节五:Slf4j1. 快速入门2. 绑定日志实现3. 桥接旧日志实现4. 原理解析章节六:Logback1. 快速入门2. 配置文件3. logback-access使用章节七:Log4j21. 快速入门2. ...

    应用分析监控平台 闪电狗.zip

    log4j配置:log4j.appender.MongoDB.layout.ConversionPattern={"timestamp":"%d","level":"%p","className":"%c","message":"%m","pid":"%V","ip":"%I",uuid:"%X{UUID}"} 如何监控tomcat访问日志 1.先配置将...

    jpivot学习总结.doc

    memberReaderClass 设定一个成员读取器,默认情况下 Hierarchy 都是从关系型数据库里读取的,如果你的数据不在 RDBMS 里面的话,你可以通过自定义一个 member reader 来表现一个 Hierarchy 。 3.5. Level 级别 , ...

    Logback用户手册中文版

    目录 ..........................................................................................................................I ...4. Appender ..........................................

Global site tag (gtag.js) - Google Analytics