123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678 |
- #region Apache License
- #endregion
- using System;
- using System.Collections;
- #if !NETSTANDARD1_3
- using System.Configuration;
- #endif
- using System.Diagnostics;
- namespace log4net.Util
- {
-
-
-
-
-
- public delegate void LogReceivedEventHandler(object source, LogReceivedEventArgs e);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public sealed class LogLog
- {
-
-
-
- public static event LogReceivedEventHandler LogReceived;
- private readonly Type source;
- private readonly DateTime timeStampUtc;
- private readonly string prefix;
- private readonly string message;
- private readonly Exception exception;
-
-
-
- public Type Source
- {
- get { return source; }
- }
-
-
-
- public DateTime TimeStamp
- {
- get { return timeStampUtc.ToLocalTime(); }
- }
-
-
-
- public DateTime TimeStampUtc
- {
- get { return timeStampUtc; }
- }
-
-
-
-
-
-
-
-
- public string Prefix
- {
- get { return prefix; }
- }
-
-
-
- public string Message
- {
- get { return message; }
- }
-
-
-
-
-
-
- public Exception Exception
- {
- get { return exception; }
- }
-
-
-
-
-
- public override string ToString()
- {
- return Prefix + Source.Name + ": " + Message;
- }
- #region Private Instance Constructors
-
-
-
-
-
-
-
- public LogLog(Type source, string prefix, string message, Exception exception)
- {
- timeStampUtc = DateTime.UtcNow;
-
- this.source = source;
- this.prefix = prefix;
- this.message = message;
- this.exception = exception;
- }
- #endregion Private Instance Constructors
- #region Static Constructor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- static LogLog()
- {
- #if !NETCF
- try
- {
- InternalDebugging = OptionConverter.ToBoolean(SystemInfo.GetAppSetting("log4net.Internal.Debug"), false);
- QuietMode = OptionConverter.ToBoolean(SystemInfo.GetAppSetting("log4net.Internal.Quiet"), false);
- EmitInternalMessages = OptionConverter.ToBoolean(SystemInfo.GetAppSetting("log4net.Internal.Emit"), true);
- }
- catch(Exception ex)
- {
-
-
-
-
- Error(typeof(LogLog), "Exception while reading ConfigurationSettings. Check your .config file is well formed XML.", ex);
- }
- #endif
- }
- #endregion Static Constructor
- #region Public Static Properties
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static bool InternalDebugging
- {
- get { return s_debugEnabled; }
- set { s_debugEnabled = value; }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static bool QuietMode
- {
- get { return s_quietMode; }
- set { s_quietMode = value; }
- }
-
-
-
- public static bool EmitInternalMessages
- {
- get { return s_emitInternalMessages; }
- set { s_emitInternalMessages = value; }
- }
- #endregion Public Static Properties
- #region Public Static Methods
-
-
-
-
-
-
-
- public static void OnLogReceived(Type source, string prefix, string message, Exception exception)
- {
- if (LogReceived != null)
- {
- LogReceived(null, new LogReceivedEventArgs(new LogLog(source, prefix, message, exception)));
- }
- }
-
-
-
-
-
-
-
-
-
-
-
- public static bool IsDebugEnabled
- {
- get { return s_debugEnabled && !s_quietMode; }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public static void Debug(Type source, string message)
- {
- if (IsDebugEnabled)
- {
- if (EmitInternalMessages)
- {
- EmitOutLine(PREFIX + message);
- }
- OnLogReceived(source, PREFIX, message, null);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static void Debug(Type source, string message, Exception exception)
- {
- if (IsDebugEnabled)
- {
- if (EmitInternalMessages)
- {
- EmitOutLine(PREFIX + message);
- if (exception != null)
- {
- EmitOutLine(exception.ToString());
- }
- }
- OnLogReceived(source, PREFIX, message, exception);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public static bool IsWarnEnabled
- {
- get { return !s_quietMode; }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public static void Warn(Type source, string message)
- {
- if (IsWarnEnabled)
- {
- if (EmitInternalMessages)
- {
- EmitErrorLine(WARN_PREFIX + message);
- }
- OnLogReceived(source, WARN_PREFIX, message, null);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static void Warn(Type source, string message, Exception exception)
- {
- if (IsWarnEnabled)
- {
- if (EmitInternalMessages)
- {
- EmitErrorLine(WARN_PREFIX + message);
- if (exception != null)
- {
- EmitErrorLine(exception.ToString());
- }
- }
- OnLogReceived(source, WARN_PREFIX, message, exception);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
- public static bool IsErrorEnabled
- {
- get { return !s_quietMode; }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public static void Error(Type source, string message)
- {
- if (IsErrorEnabled)
- {
- if (EmitInternalMessages)
- {
- EmitErrorLine(ERR_PREFIX + message);
- }
- OnLogReceived(source, ERR_PREFIX, message, null);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static void Error(Type source, string message, Exception exception)
- {
- if (IsErrorEnabled)
- {
- if (EmitInternalMessages)
- {
- EmitErrorLine(ERR_PREFIX + message);
- if (exception != null)
- {
- EmitErrorLine(exception.ToString());
- }
- }
- OnLogReceived(source, ERR_PREFIX, message, exception);
- }
- }
- #endregion Public Static Methods
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- private static void EmitOutLine(string message)
- {
- try
- {
- #if NETCF
- Console.WriteLine(message);
-
- #else
- Console.Out.WriteLine(message);
- Trace.WriteLine(message);
- #endif
- }
- catch
- {
-
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- private static void EmitErrorLine(string message)
- {
- try
- {
- #if NETCF
- Console.WriteLine(message);
-
- #else
- Console.Error.WriteLine(message);
- Trace.WriteLine(message);
- #endif
- }
- catch
- {
-
- }
- }
- #region Private Static Fields
-
-
-
- private static bool s_debugEnabled = false;
-
-
-
- private static bool s_quietMode = false;
- private static bool s_emitInternalMessages = true;
- private const string PREFIX = "log4net: ";
- private const string ERR_PREFIX = "log4net:ERROR ";
- private const string WARN_PREFIX = "log4net:WARN ";
- #endregion Private Static Fields
-
-
-
-
- public class LogReceivedAdapter : IDisposable
- {
- private readonly IList items;
- private readonly LogReceivedEventHandler handler;
-
-
-
-
- public LogReceivedAdapter(IList items)
- {
- this.items = items;
- handler = new LogReceivedEventHandler(LogLog_LogReceived);
- LogReceived += handler;
- }
- void LogLog_LogReceived(object source, LogReceivedEventArgs e)
- {
- items.Add(e.LogLog);
- }
-
-
-
- public IList Items
- {
- get { return items; }
- }
-
-
-
- public void Dispose()
- {
- LogReceived -= handler;
- }
- }
- }
-
-
-
- public class LogReceivedEventArgs : EventArgs
- {
- private readonly LogLog loglog;
-
-
-
-
- public LogReceivedEventArgs(LogLog loglog)
- {
- this.loglog = loglog;
- }
-
-
-
- public LogLog LogLog
- {
- get { return loglog; }
- }
- }
- }
|