naps2/NAPS2.Lib.WinForms/Logging/WindowsEventLogger.cs
2022-08-14 14:38:35 -04:00

35 lines
905 B
C#

namespace NAPS2.Logging;
public class WindowsEventLogger : IEventLogger
{
private const string SOURCE_NAME = "NAPS2";
private const string LOG_NAME = "Application";
private readonly Naps2Config _config;
public WindowsEventLogger(Naps2Config config)
{
_config = config;
}
public void CreateEventSource()
{
if (!EventLog.SourceExists(SOURCE_NAME))
{
EventLog.CreateEventSource(SOURCE_NAME, LOG_NAME);
}
}
public void LogEvent(EventType eventType, EventParams eventParams)
{
if (!_config.Get(c => c.EventLogging).HasFlag(eventType)) return;
try
{
EventLog.WriteEntry(SOURCE_NAME, eventParams.ToString(), EventLogEntryType.Information);
}
catch (Exception ex)
{
Log.ErrorException("Error writing to windows event log", ex);
}
}
}