Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here's what I do (ILog is just my own wrapper around log4net):</p> <pre><code>public class LoggingModule : Module { protected override void Load(ContainerBuilder builder) { builder.Register((c, p) =&gt; GetLogger(p.TypedAs&lt;Type&gt;())); } protected override void AttachToComponentRegistration( IComponentRegistry registry, IComponentRegistration registration) { registration.Preparing += (sender, args) =&gt; { var forType = args.Component.Activator.LimitType; var logParameter = new ResolvedParameter( (p, c) =&gt; p.ParameterType == typeof (ILog), (p, c) =&gt; c.Resolve&lt;ILog&gt;(TypedParameter.From(forType))); args.Parameters = args.Parameters.Union(new[] {logParameter}); }; } public static ILog GetLogger(Type type) { return new Log4NetLogger(type); } } public interface ILog { void Debug(string format, params object[] args); void Info(string format, params object[] args); void Warn(string format, params object[] args); void Error(string format, params object[] args); void Error(Exception ex); void Error(Exception ex, string format, params object[] args); void Fatal(Exception ex, string format, params object[] args); } public class Log4NetLogger : ILog { private readonly log4net.ILog _log; static Log4NetLogger() { XmlConfigurator.Configure(); } public Log4NetLogger(Type type) { _log = LogManager.GetLogger(type); } public void Debug(string format, params object[] args) { _log.DebugFormat(format, args); } public void Info(string format, params object[] args) { _log.InfoFormat(format, args); } public void Warn(string format, params object[] args) { _log.WarnFormat(format, args); } public void Error(string format, params object[] args) { _log.ErrorFormat(format, args); } public void Error(Exception ex) { _log.Error("", ex); } public void Error(Exception ex, string format, params object[] args) { _log.Error(string.Format(format, args), ex); } public void Fatal(Exception ex, string format, params object[] args) { _log.Fatal(string.Format(format, args), ex); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload