log4j,每类日志,一个文件,每小时生成一次

log4j,日志输出工具。(配置文件是properties,log4j.properties)

配置生成单独的文件。

1、加入一个logger,(log4j.logger.money=INFO, money

默认的会有一个log4j.rootLogger=INFO,file,

在此加入一个

log4j.logger.money=INFO, money

解释:

log4j.logger.money中的money,是日志输出的名字。获取logger的时候,要用此名字

例子:private static Logger moneyLogger = Logger.getLogger("money");

INFO:输出的日志级别

money:对应的输出appender,下面会说到

2、加入appender(这里的配置,就不详细说明了,都是log4j的配置。)

log4j.appender.money=org.apache.log4j.DailyRollingFileAppender
log4j.appender.money.File=log/money.log 
log4j.appender.money.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.money.layout=org.apache.log4j.PatternLayout
#log4j.appender.money.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

这里面的money,对应上面说的money

这里面,说一下log4j.appender.money.DatePattern='.'yyyy-MM-dd-HH这个配置,此处配置是日志生成文件的时间间隔。

'.'yyyy-MM-dd-HH这个,就表示,没小时生成一个。生成后,文件改名,以yyyy-MM-dd-HH这个时间格式,结尾。

log4j.appender.money.File=log/money.log :表示输出的文件名

此时。就已经完成日志的配置。

 

一个完整的配置

log4j.logger.money=INFO, money

log4j.appender.money=org.apache.log4j.DailyRollingFileAppender
log4j.appender.money.File=log/money.log 
log4j.appender.money.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.money.layout=org.apache.log4j.PatternLayout
#log4j.appender.money.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

 

假如有多个文件要输出。就配置多个,比如(有点麻烦,求更好的方法

log4j.logger.money=INFO, money
log4j.logger.pve=INFO, pve
log4j.logger.build=INFO, build
 

log4j.appender.money=org.apache.log4j.DailyRollingFileAppender
log4j.appender.money.File=log/money.log 
log4j.appender.money.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.money.layout=org.apache.log4j.PatternLayout
#log4j.appender.money.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

log4j.appender.pve=org.apache.log4j.DailyRollingFileAppender
log4j.appender.pve.File=log/pve.log 
log4j.appender.pve.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.pve.layout=org.apache.log4j.PatternLayout
#log4j.appender.pve.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n


log4j.appender.build=org.apache.log4j.DailyRollingFileAppender
log4j.appender.build.File=log/build.log 
log4j.appender.build.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.build.layout=org.apache.log4j.PatternLayout
#log4j.appender.build.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

注意:打印日志时,要用对应的方法获取。

    private static Logger moneyLogger = Logger.getLogger("money");
    private static Logger pveLogger = Logger.getLogger("pve");
    private static Logger buildLogger = Logger.getLogger("build");

 

此时,日志就修改完毕了。

 

下面的是,我没有测试的。log4j的优化

1)log4j.additivity.money=false(亲测,可用,必加)log4j.logger.money=INFO, money,跟这个对应。
这个选项用于控制监控logger的日志不会输出到rootlogger,否则无论会产生许多重复的数据,同时也会影响性能;

2)以缓存的形式输出。(未测试。)

log4j.appender.money.BufferedIO=true
log4j.appender.money.BufferSize=8192
这 个选项用于告诉log4j输出日志的时候采用缓冲的方式,而不是即时flush方式,并且设定了缓冲为8K,8K是默认值,可以根据日志输出的情况来修 改。这个选项很重要,在测试中发现,当并发访问很高,例如每一秒100个并发以上,使用缓存跟不使用缓冲差距很大。具体数字我这里就不列出来了。
另外我想说的是,log4j输出缓冲日志是以8K为单位的,因为磁盘的一个block为8K,这样可以减少碎片,也就是说假设你设置缓存为18K,log4j在16K(8K*2)的时候就会输出),而不是18K。

3)异步方式配置。(自行百度。此方法必须用xml配置。未测试)

转载于:https://my.oschina.net/u/2764409/blog/919206

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值