-
Notifications
You must be signed in to change notification settings - Fork 3
Gem Logging
##Log Gem's events
Gem uses a logging facade to log various events. You can implement your own appender to intercept and format Gem's messages.
###IAppender The base interface is IAppender which has the following members
void Info(string message);
void Info(string message, params object[] args);
void Debug(string message);
void Debug(string message, params object[] args);
void Warn(string message);
void Warn(string message, params object[] args);
void Error(string message);
void Error(string message, params object[] args);
void Fatal(string message);
void Fatal(string message, params object[] args);
Implement your own logging logic and add your IAppender instance to Gem.Auditor.RegisterAppender(IAppender appender) to intercept the logging events.
###ActionAppender
The ActionAppender implements IAppender and takes an Action and a format template as constructor arguments
new ActionAppender(echo: Console.WriteLine,
formatTemplate: "[%Date{0:G}] %Verbosity - %Message");
Format Template options:
%Verbosity - The event's verbosity
%Date{pattern} - The DateTime.Now %Date{0} for default
%Message - The event's message
%NewLine - Environment.NewLine
You can add your own formatting rules by adding a new FormattingRule(Regex pattern, Func<string, string> replacementRule) to appender.AddFormatingRules(ActionAppender.FormattingRule[] rules)
new FormattingRule(pattern: new Regex("%Date{.*}",RegexOptions.Compiled),
replacementRule:
msg => String.Format(msg.Replace("%Date", ""),
DateTime.Now)
###ConfigurableAppender
Additionally you can use the ConfigurableAppender to invoke an action prior an event. The configurableAppender has the following options
Action<TAppender> Info
Action<TAppender> Debug
Action<TAppender> Warn
Action<TAppender> Error
Action<TAppender> Fatal
ConfigurableAppender
.Create(new ActionAppender(echo: Console.WriteLine),
options =>
{
options.Info =
appender => Console.BackgroundColor = ConsoleColor.Yellow
options.Error =
appender => Console.BackgroundColor = ConsoleColor.Red
});
###Third Party Logging Frameworks
Log4Net
You can log using your log4net configuration by registering the Log4NetWrapper class
new Log4NetWrapper(string appenderRef)
new Log4NetWrapper(log4net.ILog logger)
NLog
You can log using your NLog configuration by registering the NLogWrapper class
new NLogWrapper(string appenderRef)
new NLogWrapper(NLog.Logger logger)