Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        /// <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 { }
        }