示例#1
0
文件: LoggerBase.cs 项目: mer2/devfx
 /// <summary>
 /// 日志写入处理
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="args"><see cref="LogEventArgs"/> 数组</param>
 protected virtual void WriteLog(object sender, LogEventArgs[] args)
 {
     if(Checker.CheckEmptyArray("args", args, false)) {
         return;
     }
     this.WriteLogInternal(sender, args);
 }
示例#2
0
文件: MainService.cs 项目: mer2/devfx
 private void LogHelperLogEvent(object sender, LogEventArgs[] args)
 {
     foreach (var e in args) {
         if(e.Level >= LogLevel.ERROR) {
             var log = string.Format("[{0}][{1}][{2}]\r\n{3}\r\n------------------\r\n", e.LogTime, e.Sender, e.Level, e.Message);
             this.EventLog.WriteEntry(log, EventLogEntryType.Error);
         }
     }
 }
示例#3
0
文件: MainForm.cs 项目: mer2/devfx
 private void LogHelperLogEvent(object sender, LogEventArgs[] args)
 {
     foreach (var e in args) {
         var log = string.Format("[{0}][{1}][{2}]\r\n{3}\r\n------------------\r\n", e.LogTime, e.Sender, e.Level, e.Message);
         if(this.Visible && this.txtLog != null) {
             if(this.txtLog.TextLength >= this.txtLog.MaxLength) {
                 this.txtLog.Clear();
             }
             this.txtLog.AppendText(log);
         }
     }
 }
示例#4
0
文件: LogHelper.cs 项目: mer2/devfx
 /// <summary>
 /// 写日志
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="level">日志等级,参见<see cref="LogLevel"/></param>
 /// <param name="logFormat">日志格式</param>
 /// <param name="parameters">格式化参数</param>
 /// <remarks>先找是否有<see cref="ILogService"/>的实现,有则调用相关方法;无则默认写入WARN级及以上的日志信息到应用程序同级目录Logs下</remarks>
 public static void WriteLog(object sender, int level, string logFormat, params object[] parameters)
 {
     var service = ServiceLocator.GetService<ILogService>();
     if (service != null) {
         service.WriteLog(sender, level, logFormat, parameters);
     } else {
         if(level >= LogLevel.WARN) {
             try {
                 var arg = new LogEventArgs(sender, level, DateTime.Now, string.Format(logFormat, parameters));
                 FileHelper.WriteLog(FileHelper.GetFullPath(string.Format(@"..{0}Logs{0}Error", Path.DirectorySeparatorChar)), string.Format(@"{0}yyyy{0}MM{0}dd{0}HH\.\l\o\g", Path.DirectorySeparatorChar), FormatLog(sender, new[] { arg }, false));
             } catch { }
         }
     }
 }
示例#5
0
文件: LogHelper.cs 项目: mer2/devfx
 /// <summary>
 /// 格式化日志信息
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="args"><see cref="LogEventArgs"/> 数组</param>
 /// <param name="withBatchFlag">批量标志</param>
 /// <returns>格式化后的日志信息</returns>
 public static string FormatLog(object sender, LogEventArgs[] args, bool withBatchFlag)
 {
     if (args == null || args.Length <= 0) {
         return string.Format("{0}", sender);
     }
     var log = new StringBuilder();
     if (withBatchFlag) {
         log.AppendFormat("[###### Start ######]\r\n{0}\r\n", sender);
     }
     foreach (var e in args) {
         log.AppendFormat("[{0}][{1}][{2}]\r\n{3}\r\n{4}\r\n------------------\r\n", e.LogTime, e.Sender, LogLevel.Format(e.Level), e.Message, e.InnerObject);
     }
     if (withBatchFlag) {
         log.Append("[###### End   ######]\r\n");
     }
     return log.ToString();
 }
示例#6
0
 /// <summary>
 /// 把日志压入堆栈并启动定时器
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="level">日志等级,参见<see cref="LogLevel"/></param>
 /// <param name="message">日志消息</param>
 /// <param name="innerObject">附加的内部对象,比如<see cref="Exception"/></param>
 protected virtual void WriteLogInternal(object sender, int level, string message, object innerObject)
 {
     sender = this.GetLogSource(sender);
     var e = new LogEventArgs(sender, level, DateTime.Now, message, innerObject);
     lock (this.LogQueue) {
         this.LogQueue.Enqueue(e);
     }
     this.StartTimer();
 }
示例#7
0
 /// <summary>
 /// 把异常信息写入缺省的日志处理器中
 /// </summary>
 /// <param name="e">异常</param>
 /// <param name="args">日志列表</param>
 protected virtual void WriteErrorToDefaultHandler(Exception e, LogEventArgs[] args)
 {
     if (this.DefaultHandler != null) {
         try {
             var arg = new LogEventArgs(this, LogLevel.EMERGENCY, DateTime.Now, e.Message, LogHelper.FormatLog(e, args, true));
             this.DefaultHandler.WriteLog(this, new[] { arg });
         } catch { }
     }
 }
示例#8
0
 /// <summary>
 /// 日志写入触发方法
 /// </summary>
 /// <param name="e">LogEventArgs[]</param>
 protected virtual void OnLogWriting(LogEventArgs[] e)
 {
     if (this.LogWritingInternal != null) {
         this.LogWritingInternal(this, e);
     }
 }
示例#9
0
 /// <summary>
 /// ��־д�봥������
 /// </summary>
 /// <param name="e">LogEventArgs</param>
 protected virtual void OnLogEvent(LogEventArgs e)
 {
     if(this.logEvent != null) {
         try {
             this.logEvent(this, e);
         } catch { }
     }
 }
示例#10
0
 void IBaseLogger.WriteLog(object sender, int level, string message)
 {
     LogEventArgs e = new LogEventArgs(sender, level, DateTime.Now, message);
     this.queue.Enqueue(e);
 }
示例#11
0
 /// <summary>
 /// ȱʡ����־д�봦��
 /// </summary>
 /// <param name="sender">������</param>
 /// <param name="e">LogEventArgs</param>
 public static void DefaultLogEventHandler(object sender, LogEventArgs e)
 {
     string log = string.Format("[{0}][{1}][{2}]\r\n{3}\r\n------------------\r\n", e.LogTime, e.Sender, e.Level, e.Message);
     LogHelper.WriteLog(logger.logPath, logger.logFile, log);
 }
示例#12
0
文件: LoggerBase.cs 项目: mer2/devfx
 /// <summary>
 /// 实际的日志写入处理过程
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="args"><see cref="LogEventArgs"/> 数组</param>
 protected abstract void WriteLogInternal(object sender, LogEventArgs[] args);
示例#13
0
文件: LoggerBase.cs 项目: mer2/devfx
 /// <summary>
 /// 日志格式化
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="args"><see cref="LogEventArgs"/> 数组</param>
 /// <param name="withBatchFlag">是否加上批量日志的标志</param>
 /// <returns>格式化后的日志</returns>
 protected virtual string LogFormat(object sender, LogEventArgs[] args, bool withBatchFlag)
 {
     return LogHelper.FormatLog(sender, args, withBatchFlag);
 }
示例#14
0
文件: LoggerBase.cs 项目: mer2/devfx
 void ILogger.WriteLog(object sender, LogEventArgs[] args)
 {
     this.WriteLog(sender, args);
 }