2
我只是在寻找确认这个实现是线程安全的。我找不到任何有关在我的WriteLog方法中使用的.Net EventLog.WriteEntry方法是否内部线程安全的信息。是EventLog编写器线程安全
我需要它是线程安全的上下文是这样的。我有3个线程我希望他们共享相同的记录器实例。它们将全部写入相同的事件日志源 - 源不能更改。
类中没有成员变量不同步从访问它们的不同线程中获取同步,所以我在考虑是否它是线程安全的答案纯粹取决于EventLog.WriteEntry方法本身是否是线程安全的。
我很感激,如果有人可以证实这一点。非常感谢。
public class EventLogWriter : ILogWriter
{
private string EventLogSourceName;
public EventLogWriter() { EventLogSourceName = System.Configuration.ConfigurationManager.AppSettings["CustomEventLogSourceName"]; }
public EventLogWriter(string eventLogSourceName) { EventLogSourceName = eventLogSourceName; }
// ILogWriter interface method
public void WriteLog(string content, LogType logType)
{
// maps from our logType to the event log type
EventLogEntryType eventLogType = GetEventLogType(logType);
EventLog.WriteEntry(this.EventLogSourceName, content.ToString(), eventLogType, 0, (short)logType);
}
protected EventLogEntryType GetEventLogType(LogType logType)
{
EventLogEntryType eventLogType;
switch (logType)
{
case LogType.UnhandledException:
eventLogType = EventLogEntryType.Error;
break;
case LogType.HandledException:
eventLogType = EventLogEntryType.Warning;
break;
case LogType.Warning:
eventLogType = EventLogEntryType.Warning;
break;
case LogType.Information:
eventLogType = EventLogEntryType.Information;
break;
case LogType.Verbose:
eventLogType = EventLogEntryType.Information;
break;
default:
eventLogType = EventLogEntryType.Error;
break;
}
return eventLogType;
}
}
啊,完美。感谢您的及时回复。我搜索了WriteLog方法页面,没有想到要升级到EventLog类。 – Bunjy