/// <summary> /// Two-phase termination이 가능하도록 내부에서 항상 shutdown요청을 감시하면서 단위작업을 수행한다. /// <see cref="ThreadInterruptedException"/>이 발생해도 내부적으로 무시하고 진행한다. /// </summary> public override void Run() { if (IsDebugEnabled) { log.Debug("Run the worker thread."); } OnStarted(); try { // 중지가 요청될 때까지 단위 작업을 호출합니다. while (IsShutdownRequested == false) { DoWork(); Thread.Sleep(WorkInterval); } } catch (ThreadInterruptedException tie) { if (log.IsInfoEnabled) { log.InfoException("Worker thread is interrupted. It's just information.", tie); } } finally { DoShutDown(); } OnFinished(); if (IsDebugEnabled) { log.Debug("Current worker thread is finished."); } }
public void Info(string message, Exception ex) { wrappedLogger.InfoException(message, ex); }
public void InfoException(string message, Exception exception) { _nlogger.InfoException(message, exception); }
/// <summary> /// Logs an Info message and exception. /// </summary> /// <param name="message">The message.</param> /// <param name="exception">The exception.</param> public void Info(object message, Exception exception) { log.InfoException(message.ToString(), exception); }
/// <summary> /// Logs the given message. /// Output depends on the associated NLog configuration. /// </summary> /// <param name="item">A <see cref="LogItem"/> which encapsulates information to be logged.</param> /// <exception cref="ArgumentNullException">If <paramref name="item"/> is a null reference.</exception> public override void Write(LogItem item) { if (item == null) { throw new ArgumentNullException("item"); } string message = FormatItem(item); if (item.Exception != null) { switch (item.LogLevel) { case LogLevel.Fatal: log.FatalException(message, item.Exception); break; case LogLevel.Error: log.ErrorException(message, item.Exception); break; case LogLevel.Warn: log.WarnException(message, item.Exception); break; case LogLevel.Info: log.InfoException(message, item.Exception); break; case LogLevel.Debug: log.DebugException(message, item.Exception); break; default: log.InfoException(message, item.Exception); break; } } else { switch (item.LogLevel) { case LogLevel.Fatal: log.Fatal(message); break; case LogLevel.Error: log.Error(message); break; case LogLevel.Warn: log.Warn(message); break; case LogLevel.Info: log.Info(message); break; case LogLevel.Debug: log.Debug(message); break; default: log.Info(message); break; } } }
void Log(LogItem item) { if (item == null) { throw new ArgumentNullException("item"); } if (item.LogException != null) { switch (item.Level) { case LogLevel.Fatal: _logger.FatalException(item.Text, item.LogException); break; case LogLevel.Error: _logger.ErrorException(item.Text, item.LogException); break; case LogLevel.Warn: _logger.WarnException(item.Text, item.LogException); break; case LogLevel.Info: _logger.InfoException(item.Text, item.LogException); break; case LogLevel.Debug: _logger.DebugException(item.Text, item.LogException); break; default: _logger.InfoException(item.Text, item.LogException); break; } } else { switch (item.Level) { case LogLevel.Fatal: _logger.Fatal(item.Text); break; case LogLevel.Error: _logger.Error(item.Text); break; case LogLevel.Warn: _logger.Warn(item.Text); break; case LogLevel.Info: _logger.Info(item.Text); break; case LogLevel.Debug: _logger.Debug(item.Text); break; default: _logger.Info(item.Text); break; } } }