您的位置:首页 > 编程语言 > C语言/C++

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

2013-12-04 14:17 603 查看

以下我的配置文件,设置每秒产生一个文件(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去掉就好了。真实的悲剧。

希望我的这个回帖可以让悲剧不要再次发生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: