论坛首页 入门技术论坛

Log4j是如何保证线程安全或多进程安全?

浏览 9203 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-12  
最想知道的一个问题是:log4j最终是否是用一个单独的线程来对日志文件进行写操作的?

或者这样表达,多个线程同时将他们的LogEvent发送到某个manager process-->信息排队-->缓存,同时manager process取出所有缓存的日志信息并一条一条的将他们写入文件中去?(有且只有一个线程在实际操作文件)?

我看了一些log4j的源码,以FileAppender为例,似乎是没个log实例直接调用FileWiiter来实现的将日志信息写入文件的。难道不是如我上面提到的那种方式?

希望有人可以讨论一下。
   发表时间:2007-01-16  
没有仔细看过log4j的源代码。

lo4j的写日志是异步的,我感觉会使楼主上面说的方式。

楼下的继续。
0 请登录后投票
   发表时间:2007-01-16  
我这几天看了一些Log4j的API文档和源码,Log4j中有一个AsyncAppender可以做一个桥接的方式将其他的Appender连接起来。而这个AsyncAppender的作用就是是Log4j对所有的LogEvent的事件实际输出是异步的。好像默认的Buffer Size是128条。

但是现在有一个新问题,希望大家可以帮忙解决。

RollingFileAppender可以设置最大日志文件大小并有一定的备份规则。而DailyFollingFileAppender则可以按Pattern来按某个时间单位为名称命名日志文档的名称。但是如何把而者的优点集合在一起呢?难道要自己重写一个Appender?

0 请登录后投票
   发表时间:2007-01-16  
liusu 写道
我这几天看了一些Log4j的API文档和源码,Log4j中有一个AsyncAppender可以做一个桥接的方式将其他的Appender连接起来。而这个AsyncAppender的作用就是是Log4j对所有的LogEvent的事件实际输出是异步的。好像默认的Buffer Size是128条。

但是现在有一个新问题,希望大家可以帮忙解决。

RollingFileAppender可以设置最大日志文件大小并有一定的备份规则。而DailyFollingFileAppender则可以按Pattern来按某个时间单位为名称命名日志文档的名称。但是如何把而者的优点集合在一起呢?难道要自己重写一个Appender?

关注这个问题,曾经也有这个想法。如果能实现,对于日志内容非常多的程序会有很大用处。
0 请登录后投票
   发表时间:2007-01-16  
我正打算新写一个Appender继承DailyRollingFileAppender。。。但是对我来说难度不小。。。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics