Taylohtio/GeneralSSO/GeneralSSO.Server/CodeFiles/Services/Impl/Logger.cs

94 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using log4net.Appender;
using log4net.Core;
using Microsoft.Practices.ServiceLocation;
using Taloyhtio.GeneralSSO.Server.CodeFiles.Common;
using Taloyhtio.GeneralSSO.Server.CodeFiles.Entities;
using Taloyhtio.GeneralSSO.Server.CodeFiles.Repositories;
namespace Taloyhtio.GeneralSSO.Server.CodeFiles.Services.Impl
{
public class Logger : AppenderSkeleton, ILogger
{
private ILogRepository logRepository;
public Logger()
{
this.logRepository = ServiceLocator.Current.GetInstance<ILogRepository>(); ;
}
public void Log(EventType type, string component, string msg)
{
try
{
var logRecord = new Log { Component = component, Created = DateTime.Now, EventType = type, ThreadId = Thread.CurrentThread.ManagedThreadId, Message = msg };
this.logRepository.Save(logRecord);
}
catch
{
}
}
public void Info(string component, string msg)
{
this.Log(EventType.Info, component, msg);
}
public void Warn(string component, string msg)
{
this.Log(EventType.Warn, component, msg);
}
public void Error(string component, string msg)
{
this.Log(EventType.Error, component, msg);
}
public void Error(string component, Exception x)
{
this.Log(EventType.Warn, component, x.ToInfo());
}
protected override void Append(LoggingEvent e)
{
try
{
if (e == null)
{
return;
}
var type = this.getType(e.Level);
this.Log(type, Constants.LogComponents.DOTNETOPENAUTH, base.RenderLoggingEvent(e));
}
catch
{
}
}
private EventType getType(Level level)
{
if (level == null)
{
return EventType.Info;
}
switch (level.Name)
{
case "DEBUG":
case "INFO":
return EventType.Info;
case "WARN":
return EventType.Warn;
case "ERROR":
case "FATAL":
return EventType.Error;
default:
return EventType.Info;
}
}
}
}