关闭

C++ log4cxx日志打印配置文件详解

标签: c++log4cxx 日志
1941人阅读 评论(0) 收藏 举报
分类:


以下我的配置文件,设置每秒产生一个文件(testAppender)是可以的,但是每天产生一个文件(DAILY_FILE)就是不行,有用过的人能发以下每天产生一个文件的配置么?

log4j.rootLogger=DEBUG,CONSOLE,FILE,DAILY_FILE,testAppender
 log4j.addivity.org.apache=true

 # 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.Threshold=DEBUG
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

 # 应用于文件回滚
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
 log4j.appender.FILE.Threshold=DEBUG
 log4j.appender.FILE.File=log/FILE.log
 log4j.appender.FILE.Append=true
 log4j.appender.FILE.MaxFileSize=10240KB
 log4j.appender.FILE.MaxBackupIndex=10
 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.FILE.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

 # 每天产生日志
log4j.appender.DAILY_FILE=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.DAILY_FILE.file=log/DAILY_FILE.log
 log4j.appender.DAILY_FILE.DatePattern='.'yyyy-MM-dd
 log4j.appender.DAILY_FILE.Append=true
 log4j.appender.DAILY_FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.DAILY_FILE.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

 # 测试
log4j.appender.testAppender=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.testAppender.file=log/obsoleteDRFA-test1.log
 log4j.appender.testAppender.DatePattern='.'yyyy-MM-dd_HH_mm_ss
 log4j.appender.testAppender.Append=true
 log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
 log4j.appender.testAppender.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
 
 
 #######################
 #解答
 #######################
 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
 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


 #应用于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
 log4j.appender.MAIL.From=web@www.wuset.com
 log4j.appender.MAIL.SMTPHost=www.wusetu.com
 log4j.appender.MAIL.Subject=Log4J Message
 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


 ###################
 #每天产生一个日志文件
###################

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.file.DatePattern='.'yyyy-MM-dd
 log4j.appender.file.File= logs/run.log
 log4j.appender.file.Append=true
 log4j.appender.file.Threshold=INFO
 log4j.appender.file.layout=org.apache.log4j.PatternLayout
 log4j.appender.file.layout.ConversionPattern=%c %x - %m%n    
 
 
 
 
 每天产生一个日志这种配置偶还没用过.不过用过的人很多了。
==============转=========================
http://dev.csdn.net/article/31827.shtm

  我们开发的B/S结构系统,在服务端一般要有日常运行的日志记录。保存成日志文件形式的时候,大家经常会遇到一个问题:日志文件过大。上百兆的日志文件对 查阅日志信息来说也是一个问题。所以我希望能够每天或每个月产生一个日志文件,这样文件不至于过大。 或者根据日志文件大小来判断,超过规定大小,日志自动增加新文件。
    在log4j中这两种方式的实现都很简单,只要在配置文件中设置即可。

 一、按照一定时间产生日志文件,配置文件如下:
    # Set root logger level to ERROR and its only appender to A1.
     log4j.rootLogger=ERROR,R

     # R is set to be a DailyRollingFileAppender.
     log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

     log4j.appender.R.File=backup.log
     log4j.appender.R.DatePattern = '.'yyyy-MM-dd
     log4j.appender.R.layout=org.apache.log4j.PatternLayout
     log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
    
     以上配置是每天产生一个备份文件。其中备份文件的名字叫backup.log。
    具体的效果是这样:当天的日志信息记录在backup.log文件中,前一天的记录在名称为   backup.log.yyyy-mm-dd 的文件中。
    类似的,如果需要每月产生一个文件可以修改上面的配置:
    将
      log4j.appender.R.DatePattern = '.'yyyy-MM-dd
     改为
        log4j.appender.R.DatePattern = '.'yyyy-MM

二、根据日志文件大小自动产生新日志文件
    配置文件内容如下:

# Set root logger level to ERROR and its only appender to A1.
 log4j.rootLogger=ERROR,R

 # R is set to be a RollingFileAppender.
 log4j.appender.R=org.apache.log4j.RollingFileAppender

 log4j.appender.R.File=backup.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=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n


其中:
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
 # 保存一个备份文件
log4j.appender.R.MaxBackupIndex=1



我在半年前就遇到这个问题,今天花了半天时间不停的尝试,终于找到原因了,是:
DailyRollingFileAppender配置项下面File的优先级是高于DatePattern的,
 所以如果你希望按照DatePattern自动切换日志文件名的话,就不要指定File属性了,
 原来是这么简单的原因,我却半年后才找到答案,反思中。。。
 
 
 
 正如前面w_j_w2008的配置,其实只要把
“log4j.appender.file.File= logs/run.log”
这一行注释掉就可以了。如果希望按月生成只需要修改
“log4j.appender.file.DatePattern='.'yyyy-MM-dd”
把-dd去掉就好了。真实的悲剧。

 希望我的这个回帖可以让悲剧不要再次发生。

0
0
查看评论

log4CXX第二篇---配置文件(properties文件)详解

一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。 1、Log...
  • crazyhacking
  • crazyhacking
  • 2013-07-26 15:59
  • 9133

【学习笔记】log4cxx配置详解

一、简述 由于log4cxx是log4j的C++版本的实现,因此配置也是沿用log4j的配置,没有太大的差异,在互联网上找到讲解的log4cxx的配置的文章也很多,因此一些基本的配置和语法我不在过多陈述,为了笔记我会从互联网上摘抄一部分,然后加些自己的理解,尽量将这个配置说清楚。 二、主要组成部...
  • FHXPP_27
  • FHXPP_27
  • 2012-12-11 23:21
  • 6588

Log4cxx配置文件介绍

Log4cxx配置文件介绍2009-07-31 20:34Log4cxx配置由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。    1.日志信息的优先级Logger的语法:     &#...
  • lqxqust
  • lqxqust
  • 2010-03-01 22:04
  • 4203

log4cxx 使用代码进行配置

(1)官网的一个例子 #include #include #include #include #include int main() { log4cxx::FileAppender * fileAppender = new log4cxx::FileAppender(...
  • crazyhacking
  • crazyhacking
  • 2015-04-22 15:14
  • 2398

log4cpp之配置文件使用方法

本文转载自:http://www.cnblogs.com/welkinwalker/archive/2011/06/23/2088197.html     另一个非常优秀的特征就是通过读取配置文件,确定category、appender、layout等对象。也是我们非常推荐的使用...
  • liuhong135541
  • liuhong135541
  • 2013-07-11 11:23
  • 5850

使用XML文件方式配置log4cxx(log4cxx xml例子)

废话不多说,直接给出log.xml文件的全部内容。 xml例子)" title="使用XML文件方式配置log4cxx(log4cxx xml例子)"> 为了方便使用下面给出上面xml文件的文字版代码。使用的时候只需要将下面代码复制下来,保存...
  • shadow67
  • shadow67
  • 2015-04-16 11:24
  • 426

日志操作利器log4cxx 分享

资料出处:http://saupb.blog.163.com/blog/static/4712417820112951932781/前言:log4cxx的配置文件完全和log4j相同,但是比较别扭的地方就是log4j使用com.aa.bb这样组织类,用在log4cxx中多少有点别扭(无论如何也不会有...
  • Augusdi
  • Augusdi
  • 2013-05-29 16:15
  • 2504

log4cpp的配置

转自 http://www.usidcbbs.com/simple/?t1514.html C++日志库,log4cplus,log4cpp使用资料手册 1 下载log4cpp并解压。 2 打开\log4cpp-0.3.4b\msvc6\msvc6.d...
  • wyb19890515
  • wyb19890515
  • 2012-01-09 13:19
  • 4638

C++日志系统log4cxx使用总结

本文主要从log4cxx级别、layout、格式化、命名规则、Filter几个方面介绍。   一、log4cxx命名规则         Logger由一个String类的名字识别,logger的名字是大小写敏感的...
  • i7thTool
  • i7thTool
  • 2017-03-20 16:26
  • 383

在C++中使用Apache Log4cxx日志服务

摘要Log4cxx是开放源代码项目Apache Logging Service的子项目之一,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。本文对log4cxx的使用及配置进行介绍,并给出一个可以快速开始的实例。最后,针对日志服务给出一些实践方面的建议。1.  ...
  • lucky888
  • lucky888
  • 2006-06-02 19:39
  • 7814
    个人资料
    • 访问:452135次
    • 积分:5574
    • 等级:
    • 排名:第5664名
    • 原创:55篇
    • 转载:406篇
    • 译文:0篇
    • 评论:17条
    最新评论