/// <summary> /// Регистрация Файла logFile как получателя лога. /// </summary> /// <param name="loggerName">Если null, то для default-Логгера</param> /// <param name="logFile"></param> /// <param name="insDateTimeMarker">Если true, то в начале каждой строки буде вставляться метка [дата/время]</param> public static void RegisterLogger(String loggerName, String logFile, Boolean insDateTimeMarker) { String vPath = Path.GetDirectoryName(logFile); if (!String.IsNullOrEmpty(vPath) && !Directory.Exists(vPath)) Directory.CreateDirectory(vPath); CLoggerEventHandler eventHandler = new CLoggerEventHandler((sender, line) => { Utl.AppendStringToFile(logFile, line, Utl.DefaultEncoding); }); RegisterLogger(loggerName, eventHandler, insDateTimeMarker); }
/// <summary> /// Регистрация Контрола logControl как получателя лога. При этом лог будет добавляться в поле Техт. /// </summary> /// <param name="loggerName">Если null, то для default-Логгера</param> /// <param name="logControl"></param> /// <param name="insDateTimeMarker">Если true, то в начале каждой строки буде вставляться метка [дата/время]</param> public static void RegisterLogger(String loggerName, Control logControl, Boolean insDateTimeMarker) { if (logControl != null) { CLoggerEventHandler eventHandler = new CLoggerEventHandler((sender, line) => { Control senderControl = logControl; if ((senderControl != null) && !senderControl.Disposing && !senderControl.IsDisposed && senderControl.IsHandleCreated) { Action d = new Action(() => { senderControl.Text = String.IsNullOrEmpty(senderControl.Text) ? line : senderControl.Text + "\n" + line; }); if (senderControl.InvokeRequired) senderControl.Invoke(d); else d(); } }); RegisterLogger(loggerName, eventHandler, insDateTimeMarker); } }
/// <summary> /// Регистрация обработчика собития OnLog для Логгера "loggerName" /// </summary> /// <param name="loggerName">Если null, то для default-Логгера</param> /// <param name="eventHandler"></param> /// <param name="insDateTimeMarker"></param> public static void RegisterLogger(String loggerName, CLoggerEventHandler eventHandler, Boolean insDateTimeMarker) { CLoggerItem vItem = null; String locLoggerName = String.IsNullOrEmpty(loggerName) ? csDefaultLoggerName : loggerName; if(sFLoggers.ContainsKey(locLoggerName)) vItem = sFLoggers[locLoggerName]; if(vItem == null){ vItem = new CLoggerItem(); sFLoggers[locLoggerName] = vItem; } vItem.FInsDateTimeMarker = insDateTimeMarker; vItem.OnLog -= eventHandler; vItem.OnLog += eventHandler; }