70 lines
2.3 KiB
C#
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) { }
|
|
}
|
|
}
|
|
}
|