public Logger(bool toSTDOUT = true, T minLogLevel = default, ILogMessageFormater <T> messageFormater = null, params string[] logFilePath) { ILogMessageFormater <T> formater = messageFormater ?? DefaultLogMessageFormater <T> .Instance; TextWriter[] logFiles = new TextWriter[logFilePath.Length + (toSTDOUT ? 1 : 0)]; for (int i = 0; i < logFilePath.Length; i++) { logFiles[i] = new StreamWriter(logFilePath[i], true); } if (toSTDOUT) { logFiles[logFilePath.Length] = Console.Out; } fileHandler = new LogfileHandler <T>(formater, logFiles); startTime = Now; MinLogLevel = minLogLevel; T[] enumTypes = (T[])Enum.GetValues(typeof(T)); logEvents = new Dictionary <T, Action <LogMessage <T> > >(enumTypes.Length); foreach (var item in enumTypes) { logEvents.Add(item, default); } }
public LogfileHandler(ILogMessageFormater <T> formater, params TextWriter[] pOutputStreams) { if (pOutputStreams is null || pOutputStreams.Length == 0) { throw new ArgumentException("A minimum of one output stream must be specified", nameof(pOutputStreams)); } outputStreams = pOutputStreams; outputStreamSynchronisation = new SemaphoreSlim(1, 1); this.formater = formater; }
public Logger(T minLogLevel = default, ILogMessageFormater <T> messageFormater = null, params TextWriter[] pWriterStreams) { ILogMessageFormater <T> formater = messageFormater ?? DefaultLogMessageFormater <T> .Instance; fileHandler = new LogfileHandler <T>(formater, pWriterStreams); startTime = Now; MinLogLevel = minLogLevel; T[] enumTypes = (T[])Enum.GetValues(typeof(T)); logEvents = new Dictionary <T, Action <LogMessage <T> > >(enumTypes.Length); foreach (var item in enumTypes) { logEvents.Add(item, default); } }
public readonly string ToString(ILogMessageFormater <T> formater, object formatProviderData) => formater.FormateLogMessage(this, formatProviderData);
public Email(ILogMessageFormater formater, IEmailHelper sender) { _formater = formater; _sender = sender; }
public Output(ILogMessageFormater formater, IOutputWriter writer) { _formater = formater; _writer = writer; }