Files
2025-06-06 09:15:13 +02:00

70 lines
2.3 KiB
C#

using System;
using System.Diagnostics;
using System.Globalization;
using System.Threading;
using System.Text;
using log4net;
using log4net.Config;
namespace com.itac.mes.tools
{
public class LogHandler
{
private static Object lockObject = new Object();
protected static readonly ILog logger = LogManager.GetLogger(Constants.LOGGER);
private static TraceSource ts = new TraceSource(Constants.SERVICE_NAME, SourceLevels.All);
static LogHandler()
{
XmlConfigurator.Configure();
}
public static void addListener(TraceListener listener)
{
ts.Listeners.Add(listener);
}
public static void log(String loggerName, TraceEventType level, String message)
{
log(loggerName, level, message, null);
}
public static void log(String loggerName, TraceEventType level, String message, Exception e)
{
// alles wird geloggt, aber nur Error und Fatal an die TraceSource weiter gereicht
try
{
lock (lockObject)
{
switch (level)
{
case TraceEventType.Critical: ts.TraceEvent(level, 10, message);
ts.Flush();
logger.Fatal(message, e);
break;
case TraceEventType.Error: ts.TraceEvent(level, 10, message);
ts.Flush();
logger.Error(message, e);
break;
case TraceEventType.Information:
logger.Info(message, e);
break;
case TraceEventType.Verbose:
logger.Debug(message, e);
break;
case TraceEventType.Warning:
logger.Warn(message, e);
break;
default: logger.Info(message, e);
ts.TraceEvent(level, 10, message);
ts.Flush();
break;
}
}
}
catch (ThreadInterruptedException) { }
}
}
}