Log4net FAQ表示 log4net 是线程安全的:
问题:log4net线程安全吗?
答案:是的,log4net是线程安全的。
但是,AdoNetAppender class的手册说明如下:
实例成员 不 保证是线程安全的。
我的猜测是log4net不是线程安全的。我使用此类登录数据库,并不时手动刷新附加数据。我看到有些记录是重复的。
查看代码,在我看来,基类BufferingAppenderSkeleton
锁定了flush()
的对象,但最终调用的函数SendFromBuffer()
可以从其他地方调用没有锁(例如Append()
)。因此,该类似乎不是线程安全的。
那么我应该断定该类不是线程安全的,但是log4net中的用法是这样的吗?