C# log4net的线程安全

C# log4net的线程安全,c#,.net,log4net,C#,.net,Log4net,关于log4net是否是线程安全的,似乎有一些讨论,共识是框架是线程安全的,但appender不是,需要正确使用以实现线程安全。有没有人能解释一下这一点,并举例说明以线程安全的方式使用RollingFileAppender?是否需要将其置于上下文中?不知何故被锁定了,或者什么?根据这一点,RollingFileAppender是线程安全的(就日志记录而言)。这是来自log4net的一个开发者。他特别指出,代码中不需要这样的锁定: lock(logger) { logger.Info("Hel

关于log4net是否是线程安全的,似乎有一些讨论,共识是框架是线程安全的,但appender不是,需要正确使用以实现线程安全。有没有人能解释一下这一点,并举例说明以线程安全的方式使用RollingFileAppender?是否需要将其置于上下文中?不知何故被锁定了,或者什么?

根据这一点,RollingFileAppender是线程安全的(就日志记录而言)。这是来自log4net的一个开发者。他特别指出,代码中不需要这样的锁定:

lock(logger)
{
  logger.Info("Hello!");
}
直截了当地说:

log4net线程安全吗?

是的,log4net是线程安全的


因此,不需要手动锁定。

但我的彩色控制台Pender出现了死锁。并且它的注释指出内部编写器(m_consoleOutputWriter)不是线程安全的

/// <summary>
/// The console output stream writer to write to
/// </summary>
/// <remarks>
/// <para>
/// This writer is not thread safe.
/// </para>
/// </remarks>
private System.IO.StreamWriter m_consoleOutputWriter = null;
//
///要写入的控制台输出流写入程序
/// 
/// 
/// 
///此编写器不是线程安全的。
/// 
/// 
private System.IO.StreamWriter m_consoleOutputWriter=null;

而且我已经切换回基本的ConsolePender,从那以后就没有问题了。

太棒了!非常感谢。