45 lines
1.3 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|