blog3000/Blog3000/Server/Utils/MySyslogLoggerProvider.cs

45 lines
1.3 KiB
C#

using Microsoft.Extensions.Logging;
using Syslog.Framework.Logging;
using Syslog.Framework.Logging.TransportProtocols;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Blog3000.Server.Utils
{
public class MySyslogLoggerProvider: ILoggerProvider
{
private readonly SyslogLoggerSettings _settings;
private readonly string _appName;
private readonly string _hostName;
private readonly LogLevel _logLevel;
private readonly IDictionary<string, ILogger> _loggers;
private readonly IMessageSender _messageSender;
public MySyslogLoggerProvider(SyslogLoggerSettings settings, string appName, string hostName, LogLevel logLevel)
{
_appName = appName;
_settings = settings;
_hostName = hostName;
_logLevel = logLevel;
_messageSender = settings.CustomMessageSender ?? new Syslog.Framework.Logging.TransportProtocols.UnixSockets.UnixSocketMessageSender(settings.UnixSocketPath);
_loggers = new Dictionary<string, ILogger>();
}
public ILogger CreateLogger(string name)
{
if (!_loggers.ContainsKey(name))
_loggers[name] = new MySyslog5424v1Logger(name, _settings, _appName, _hostName, _logLevel, _messageSender);
return _loggers[name];
}
public void Dispose()
{
_loggers.Clear();
}
}
}