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 _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(); } 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(); } } }