/// <summary>
 /// Create the wrapping stamper logger. By default, root logger is not wrapped.
 /// </summary>
 /// <param name="logger">Implementation logger to wrap.</param>
 /// <param name="call">delegate to call to stamp the event before passing it to <paramref name="logger"/> </param>
 /// <returns></returns>
 protected virtual Logger CreateStampingLogger(Logger logger, StampDelegate call)
 {
     if (logger.Name == "root")
     {
         return(logger);
     }
     else
     {
         return(new StampingLogger(logger, call));
     }
 }
 /// <summary>
 /// Wrap a logger and remember to call a delegate for each <see cref="LoggingEvent"/>
 /// </summary>
 /// <param name="innerLogger"></param>
 /// <param name="call"></param>
 /// <remarks>
 /// Callers shoul ensure that params are not null!
 /// </remarks>
 public StampingLogger(Logger innerLogger, StampDelegate call)
     : base(innerLogger.Name)
 {
     InnerLogger = innerLogger;
     Call        = call;
 }