4 using System.Collections.Generic;
5 using System.Text.RegularExpressions;
7 namespace SiliconStudio.Core.Diagnostics
14 #region Constants and Fields
24 private static readonly Dictionary<string, Logger> MapModuleNameToLogger =
new Dictionary<string, Logger>();
33 public delegate
void MessageFilterDelegate(ref
ILogMessage logMessage);
49 public static Logger[] RegisteredLoggers
53 lock (MapModuleNameToLogger)
55 var loggers =
new Logger[MapModuleNameToLogger.Count];
56 MapModuleNameToLogger.Values.CopyTo(loggers, 0);
69 if (activator == null)
70 throw new ArgumentNullException(
"activator");
72 foreach (var logger
in MapModuleNameToLogger.Values)
86 if (regexPatternModule == null)
87 throw new ArgumentNullException(
"regexPatternModule");
89 var regex =
new Regex(regexPatternModule);
90 ActivateLog(regex, minimumLevel, maximumLevel);
103 if (regexPatternModule == null)
104 throw new ArgumentNullException(
"regexPatternModule");
109 if (regexPatternModule.Match(logger.Module).Success)
111 logger.ActivateLog(minimumLevel, maximumLevel, enabledFlag);
125 throw new ArgumentNullException(
"module");
128 lock (MapModuleNameToLogger)
130 if (!MapModuleNameToLogger.TryGetValue(module, out logger))
133 logger.ActivateLog(MinimumLevel);
134 MapModuleNameToLogger.Add(module, logger);
142 var filterHandler = GlobalMessageFilter;
143 if (filterHandler != null)
145 filterHandler(ref logMessage);
146 if (logMessage == null)
150 var handler = GlobalMessageLogged;
151 if (handler != null) handler(logMessage);
static Logger GetLogger(string module)
Gets the GlobalLogger associated to the specified module.
static Action< ILogMessage > GlobalMessageLogged
Occurs when a message is logged.
static void ActivateLog(Action< Logger > activator)
Activates the log for all loggers using the specified action..
Base implementation for ILogger.
static void ActivateLog(Regex regexPatternModule, LogMessageType minimumLevel, LogMessageType maximumLevel=LogMessageType.Fatal, bool enabledFlag=true)
Activates the log for loggers that match a regex pattern on the module name.
LogMessageType
Type of a LogMessage.
override void LogRaw(ILogMessage logMessage)
Internal method used to log a message. All Info, Debug, Error...etc. methods are calling this method...
static MessageFilterDelegate GlobalMessageFilter
Occurs before a message is logged.
The base interface for log messages used by the logging infrastructure.
A logger that redirect messages to a global handler and handle instantiated MapModuleNameToLogger.
static void ActivateLog(string regexPatternModule, LogMessageType minimumLevel, LogMessageType maximumLevel=LogMessageType.Fatal, bool enabledFlag=true)
Activates the log for loggers that match a regex pattern on the module name.