求org.apache.log4j.WriterAppender对象subAppend(LoggingEvent event)方法的使用例子
不知道怎么去取得LoggingEvent类型参数
传递null参数调用subAppend(null)方法会抛出异常问题:
1、怎么获取LoggingEvent参数
2、subAppend分割日志要LoggingEvent这个参数做什么用
3、为什么传递null会抛出异常。现在做任务遇到写入日志文件过大造成机器卡死的情况,所以希望通过subAppend来切割日志。
不知道怎么去取得LoggingEvent类型参数
传递null参数调用subAppend(null)方法会抛出异常问题:
1、怎么获取LoggingEvent参数
2、subAppend分割日志要LoggingEvent这个参数做什么用
3、为什么传递null会抛出异常。现在做任务遇到写入日志文件过大造成机器卡死的情况,所以希望通过subAppend来切割日志。
解决方案 »
- Struts2 标签 和 freemarker
- JSTL如何实现html生成?
- 如何將做好的電腦網頁可以在手機上觀看
- 从一个ip地址中,你可以得到什么
- org.apache.catalina.core.StandardWrapperValve invoke 异常
- jsp中文问题,传参数
- 这里有没有用过“润乾报表”的朋友,进来帮帮忙!
- 如何采用简单有效的方式来控制一个第三方的B/S系统的用户登录(根据一种本地规则来允许或者拒绝其登录)
- 怎样把Tomcat 和 Apache 整合在一起啊?
- 请问beans的目录/Web-inf/classes有大小写区别吗?
- SSH采用*-*的配置 使用annotation怎么注入Action
- web编程中注册页面使用js还是ajax验证的问题
<appender name="DATE_FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="threshold" value="debug" />
<param name="file" value="/juyee.log" />
<param name="append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n" />
</layout>
</appender>
——是闲太密集了还是?那可以每小时,也可以每天。有没有能在程序里控制当前日志文件大小的办法呢。
——没必要,log4j本身很强大,你自己去控制反而影响性能。
——想按文件大小来进行滚动的话,用:RollingFileAppender。
<appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Append" value="false"/>
<param name="MaxFileSize" value="1024KB"/>
<param name="File" value="dom/my.log"/>
<param name="MaxBackupIndex" value="50"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n"/>
</layout>
</appender>
最后有个疑问,log4j有配置又有代码,但是代码像subAppend(LoggingEvent event)方法并不是我们自己去调用的,我怀疑是机制通过配置去调用subAppend方法,有没有高人知道实现原理的给指点一下。。
public class MyDailyRollingFileAppender extends DailyRollingFileAppender {
@Override
protected void subAppend(LoggingEvent event) {
String modifiedMessage = String.format("**** Message modified by MyDailyRollingFileAppender ****nn%snn**** Finished modified message ****", event.getMessage());
LoggingEvent modifiedEvent = new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(), event.getTimeStamp(), event.getLevel(), modifiedMessage,
event.getThreadName(), event.getThrowableInformation(), event.getNDC(), event.getLocationInformation(),
event.getProperties());
super.subAppend(modifiedEvent);
}
}
最详细就是直接看API了:
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Appender.html
这个介绍也算比较完整了:
http://wwwz.iteye.com/blog/249039
RollingFileAppender 就是直接根据大小来控制日志的,它完全不考虑时间问题,只不过是所创建的文件名可以带上时间。