Пример #1
0
 private void PrepareLogger(ILoggy _, XElement l, IList <LoggyMessage> selflog)
 {
     _.Isolated = l.Attr("isolated").ToBool();
     _.Level    = l.Attr("level", "Info").To <LogLevel>();
     foreach (var element in l.Elements("appender"))
     {
         var _ref = element.Attr("ref");
         if (!string.IsNullOrWhiteSpace(_ref))
         {
             if (Appenders.ContainsKey(_ref))
             {
                 _.Appenders.Add(Appenders[_ref]);
             }
             else
             {
                 selflog.Add(new LoggyMessage(LogLevel.Error, "invalid appender ref"));
             }
         }
         else
         {
             var ap = ReadAppender(selflog, element);
             if (null != ap)
             {
                 _.Appenders.Add(ap);
             }
         }
     }
 }
Пример #2
0
 public static void Write(this ILoggy loggy, LogLevel level, params object[] args)
 {
     if (loggy.IsFor(level))
     {
         var message = new LoggyMessage(level, args);
         loggy.Write(message);
     }
 }
Пример #3
0
        public ILoggy Get(string name = null, Action <ILoggy> setup = null)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = "default";
            }

            var result = loggers.GetOrAdd(name, n => {
                var l = new DefaultLoggy {
                    Name = n
                };
                if (n == "_failsafe")
                {
                    l.Isolated = true;
                    l.Level    = LogLevel.All;
                    l.Appenders.Add(new ConsoleAppender {
                        Format = "%{Level} - %{UserName} - %{Message}"
                    });
                    l.Appenders.Add(new UdpAppender("127.0.0.2", 7071)
                    {
                        Format = "%{UserName} - %{Message}"
                    });
                    return(l);
                }
                if (n != "default")
                {
                    ILoggy parent = null;
                    if (n.Contains("."))
                    {
                        var parts = n.Split('.');
                        var path  = string.Join(".", parts.Take(parts.Length - 1));
                        parent    = Get(path);
                    }
                    else
                    {
                        parent = Get();
                    }


                    l.SubLoggers.Add(parent);
                    l.Level = parent.Level;
                }
                else
                {
                    l.Isolated = true;
                }

                if (null != setup)
                {
                    setup(l);
                }

                return(l);
            });

            return(result);
        }
Пример #4
0
        public void Run(IHostServer server, WebContext context, string callbackEndPoint, CancellationToken cancel)
        {
            this.loggy = this.loggy ?? LoggyManager.Get("handler.sendmail");
            if (!Roles.IsInRole(context.User, SecurityConst.ROLE_ADMIN))
            {
                context.Finish(new { error = "notauth" }.stringify(), status: 500);
                return;
            }
            var            p        = RequestParameters.Create(context);
            var            count    = p.num("count");
            var            messages = Queue.GetRequireSendMessages(count).ToArray();
            var            sent     = 0;
            IList <object> errors   = new List <object>();

            foreach (var message in messages)
            {
                try {
                    Sender.Send(message);
                    Queue.MarkSent(message.Id);
                    sent++;
                }
                catch (Exception e) {
                    var inner  = null == e.InnerException ? "" : e.InnerException.ToString();
                    var erinfo = new { message, error = e.ToString(), inner };
                    errors.Add(erinfo);
                    if (loggy.IsForError())
                    {
                        loggy.Error(erinfo.stringify());
                    }
                }
            }
            if (errors.Count == 0)
            {
                if (loggy.IsForTrace())
                {
                    loggy.Trace(new{ sent = messages.Length, ids = string.Join(", ", messages.Select(_ => _.Id)) });
                }
            }
            context.Finish(new {
                src = messages.Length,
                sent,
                errors
            }.stringify(), status: errors.Count == 0?200:500);
        }
Пример #5
0
 private void SetupLoggyRedirection(ILoggyManager manager)
 {
     if (_redirectedManager == manager)
     {
         return;
     }
     _redirectedManager = manager;
     _loggy             = manager.Get();
     _redirectappender  = new TextWriterAppender(_redirection)
     {
         Format = LogFormat
     };
     _loggy.Appenders.Add(_redirectappender);
     if (_redirectconsole)
     {
         _cachedAppender = _loggy.Appenders.OfType <ConsoleAppender>().FirstOrDefault();
         if (null != _cachedAppender)
         {
             _cachedAppender.Active = false;
         }
     }
 }
Пример #6
0
 public static bool IsForDebug(this ILoggy loggy)
 {
     return(loggy.IsFor(LogLevel.Debug));
 }
Пример #7
0
 public static void Trace(this ILoggy loggy, params object[] args)
 {
     Write(loggy, LogLevel.Trace, (object[])args);
 }
Пример #8
0
 public TrustedOrigin()
 {
     this.logg = Loggy.Get("sys.sec.trusted");
 }
Пример #9
0
 public static bool IsForError(this ILoggy loggy)
 {
     return(loggy.IsFor(LogLevel.Error));
 }
Пример #10
0
 public static bool IsForFatal(this ILoggy loggy)
 {
     return(loggy.IsFor(LogLevel.Fatal));
 }
Пример #11
0
 public static bool IsForInfo(this ILoggy loggy)
 {
     return(loggy.IsFor(LogLevel.Info));
 }
Пример #12
0
 public static bool IsForWarn(this ILoggy loggy)
 {
     return(loggy.IsFor(LogLevel.Warn));
 }
Пример #13
0
 public static void Info(this ILoggy loggy, params object[] args)
 {
     Write(loggy, LogLevel.Info, (object[])args);
 }
Пример #14
0
 public static void Warn(this ILoggy loggy, params object[] args)
 {
     Write(loggy, LogLevel.Warn, (object[])args);
 }
Пример #15
0
 public static void Debug(this ILoggy loggy, params object[] args)
 {
     Write(loggy, LogLevel.Debug, (object[])args);
 }
Пример #16
0
 public static void Fatal(this ILoggy loggy, params object[] args)
 {
     Write(loggy, LogLevel.Fatal, (object[])args);
 }
Пример #17
0
 public static void Error(this ILoggy loggy, params object[] args)
 {
     Write(loggy, LogLevel.Error, (object[])args);
 }
Пример #18
0
 protected virtual void SetupLoggy(ILoggy obj)
 {
 }
Пример #19
0
 public static bool IsForTrace(this ILoggy loggy)
 {
     return(loggy.IsFor(LogLevel.Trace));
 }