log4j日志优化:使用BufferedIO和BufferSize而不是ImmediateFlush
来源:互联网 发布:如何看淘宝价格曲线 编辑:程序博客网 时间:2024/06/05 00:45
之前我们使用FileAppender的时候,我们配置是ImmediateFlush=true,一旦有新日志写入,立马将日志写入到磁盘的文件中。当日志很多,这种频繁操作文件显然性能很低下。
package aty.log;import org.apache.log4j.Logger;import aty.log.service.A;public class HelloLog4j {private static Logger logger = Logger.getLogger(HelloLog4j.class);public static void main(String[] args) {logger.error("log in main.");new A().run();}}
log4j.rootLogger=debug, filelog4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.Threshold=info log4j.appender.file.ImmediateFlush=truelog4j.appender.file.append=false log4j.appender.file.File=c:/a.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%t]-[%X{ip}]-[%l]-[%p] %m%n
由于我们设置的ImmediateFlush是true,所以上面这段代码能够正常将日志写入a.log中。
为了提高日志写入文件的性能,可以使用BufferedIO和BufferSize。下面的配置我们使用了IO缓存,缓冲区大小是8KB。
log4j.rootLogger=debug, filelog4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.Threshold=info log4j.appender.file.ImmediateFlush=false log4j.appender.file.BufferedIO=truelog4j.appender.file.BufferSize=8192 log4j.appender.file.append=false log4j.appender.file.File=c:/a.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%t]-[%X{ip}]-[%l]-[%p] %m%n
package aty.log;import org.apache.log4j.LogManager;import org.apache.log4j.Logger;import aty.log.service.A;public class HelloLog4j {private static Logger logger = Logger.getLogger(HelloLog4j.class);public static void main(String[] args) {logger.error("log in main.");new A().run();Runtime.getRuntime().addShutdownHook(new Thread() {public void run() {System.out.println("shutdown...");LogManager.shutdown();System.out.println("done...");}});}}
这里使用了JVM关闭的回调,类似地在tomcat等web容器中,也有类似的关闭事件。我们需要捕获关闭事件,然后调用LogManager.shutdown()即可。
0 0
- log4j日志优化:使用BufferedIO和BufferSize而不是ImmediateFlush
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 第三方类库-日志-为什么要使用SLF4J而不是Log4J
- 解决log4j BufferedIO=true 时,buffer有残余日志不能记录的问题
- 解决log4j BufferedIO=true 时,buffer有残余日志不能记录的问题
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志——转载
- 15.log4j.properties例子:log4j.appender.file.ImmediateFlush
- 使用commons-logging和log4j记录日志
- 使用commons-logging和log4j记录日志
- 使用commons-logging和log4j记录日志
- web项目log4j日志配置和使用
- 使用slf4j和log4j记录日志
- JavaScript之window.onload = somefunction 笔记
- 人云亦云,非我辈风范。以自己的眼睛去看。
- mysql 按照某个字段括号里的字符串排序
- libsvm与liblinear的区别
- 93.View the Exhibit and examine the structure of the CUSTOMERS table. Using the CUSTOMERS table, y o
- log4j日志优化:使用BufferedIO和BufferSize而不是ImmediateFlush
- Oracle directory查询
- greenDAO的使用
- JAVA基础集合框架(一)
- 【转稿】:农村孩子为什么没有春天
- 手记NO1
- jsp自动登录设计思路(相对来说比较安全)
- ListView异步加载图片方法和滚动优化
- 【MATLAB工程人员的福音】MATLAB R2015b的Coder工具使用实例(一)