public static void Log(this IShamanLogger src, string source, string message)
 {
     if (!src.IsNullOrEmpty())
     {
         src.Log(new ShamanLogMessage(source, message));
     }
 }
        public static void Log(this IShamanLogger src, Type t, string method, string message)
        {
            if (src.IsNullOrEmpty())
            {
                return;
            }
            var info = new ShamanLogMessage
            {
                Source  = $"{t.Name}.{method}",
                Message = message
            };

            src.Log(info);
        }
 public static IShamanLogger Append(this IShamanLogger src, IShamanLogger another)
 {
     if (src.IsNullOrEmpty())
     {
         return(another ?? EmptyShamanLogger.Instance);
     }
     if (another.IsNullOrEmpty())
     {
         return(src ?? EmptyShamanLogger.Instance);
     }
     return(new MethodCallLogger(info =>
     {
         src.Log(info);
         another.Log(info);
     }));
 }