/// <summary> /// Fire event EntryLogged. /// <locDE><para />Ereignis EntryLogged auslösen.</locDE> /// </summary> /// <param name="entry">The log entry.<locDE><para />Der Logeintrag.</locDE></param> internal static void OnEntryLogged(FileLoggerEntry entry) { var threadSafeEvent = EntryLogged; if (null != threadSafeEvent) { threadSafeEvent(entry); } }
/// <summary> /// Logs the specified text (or an empty line/entry). /// <locDE><para />Loggt den angegebenen Text (oder eine Leerzeile/einen Leereintrag).</locDE> /// </summary> /// <param name="text">The text to log. If null or empty, just an empty line/entry is logged. /// <locDE><para />Der zu loggende Text. Falls null oder leer wird eine Leerzeile/ein Leereintrag geloggt.</locDE></param> /// <param name="logLevel">The log level (0 = no outputs, 9 = verbose outputs). /// <locDE><para />Der LogLevel (0 = unterdrücken, 9 = detailliert).</locDE></param> /// <param name="caller">The caller (method), null means auto detect, empty means no/unspecified caller. /// <locDE><para />Der Aufrufer (Methodenname), null heißt Auto-Erkennung, leer heißt kein/unspezifizierter Aufrufer.</locDE></param> /// <param name="ex">The exception object (if any, otherwise null). /// <locDE><para />Das Exception-Objekt (falls vorhanden, sonst null).</locDE></param> private static void Log_Internal(string text, int logLevel, string caller, Exception ex) { // Check if severity (log level) is important enough to pass through // Prüfe, ob Schweregrad (Log Level) groß/wichtig genug ist, um weiterbearbeitet zu werden if (logLevel > LogLevel) { return; } // Would be too late: Caller must be resolved by public method, as otherwise the used stack trace index does not match! // Wäre zu spät: Aufrufer muss durch die öffentliche Methode aufgelöst werden, sonst passt der Stack Trace Index nicht mehr! //caller = ResolveCaller(caller); try { #region Add decorations, fire FileLogger specific event string decoratedText = AddTextDecorations(text, (LogSeverity)logLevel, caller); #region Notify registered event callbacks (if any) about new log entry if (null != EntryLogged) { FileLoggerEntry entry = new FileLoggerEntry(); entry.LogLevel = logLevel; entry.Caller = caller; entry.Timestamp = DateTime.Now; entry.Text = text; entry.LogMessage = decoratedText; if (null != ex) { entry.Exception = ex; } OnEntryLogged(entry); } #endregion text = decoratedText; #endregion #region Trace and console outputs if (TraceOutputsEnabled) { System.Diagnostics.Debug.WriteLine(text ?? ""); } if (ConsoleOutputsEnabled) { Console.WriteLine(text ?? ""); } #endregion WriteLogEntry(text); } catch { } }