/// <summary> /// Получение строки с расширенными деталями цепочки исключений (доп. информация, SQL данные) /// </summary> /// <returns>дополнительная отладочная информация</returns> public string GetExtendedDetails() { string res = ""; Exception ex = this; while (ex != null) { res += ex.GetType().FullName + ": " + ex.Message + "\n"; if (ex.StackTrace != null) { res += "\tStack Trace:\n" + ex.StackTrace + "\n"; } if (ex is DetailedException) { if ((ex as DetailedException).Details.Length > 0) { res += "\tDetails:\n" + LogModule.ClearPassword((ex as DetailedException).Details) + "\n"; } if ((ex as DetailedException).SqlCmd != null) { res += "\tSql Command:\n" + (ex as DetailedException).SqlCmd.CommandText + "\n"; res += "\tSql Connection:\n" + LogModule.ClearPassword((ex as DetailedException).SqlCmd.Connection.ConnectionString) + "\n"; res += "\tSql Timeout:\n" + (ex as DetailedException).SqlCmd.CommandTimeout + " сек.\n"; string sParams = ""; foreach (SqlParameter p in (ex as DetailedException).SqlCmd.Parameters) { sParams += String.Format("{0}='{1}';\n", p.ParameterName, p.Value); } if (sParams.Trim().Length > 0) { res += "\tSql Params:\n" + sParams + "\n"; } } } res += "\n"; ex = ex.InnerException; } return(res); }
/// <summary> /// Инициализация статического модуля обработки ошибок приложения /// </summary> /// <param name="logModule">уже проинициализированный объект</param> /// <param name="userName">Для Web указать "All"</param> /// <param name="appName">Наименование приложения. Указать римя приложения или "Application"</param> /// <param name="switchOnLocalLogger">Включить локальное логирование</param> public static void Init(LogModule logModule, string userName = "******", string appName = "Application", bool switchOnLocalLogger = false) { lock (Sync) { LogModule oldLog = _log; _log = logModule; if (oldLog != null && oldLog is IDisposable) { (oldLog as IDisposable).Dispose(); } if (switchOnLocalLogger) { var localLogger = LoggerFactory.GetLocalLogger(appName, userName); if (localLogger != null) { _localLogger = localLogger; } } } }
/// <summary> /// Конструктор /// </summary> /// <param name="log">Текущий log-модуль</param> /// <param name="subject">Тема письма</param> /// <param name="xml">XML с информацией по ошибке</param> public TaskMailSend(LogModule log, string subject, XmlElement xml) { _log = log; _subject = subject; _xml = xml; }
/// <summary> /// Инициализация статического модуля обработки ошибок приложения /// </summary> /// <param name="logModule">уже проинициализированный объект</param> /// <param name="appName"></param> /// <param name="switchOnLocalLogger">Включить локальное логирование</param> public static void Init(LogModule logModule, string appName = "Application", bool switchOnLocalLogger = false) { Init(logModule, null, appName, switchOnLocalLogger); }
/// <summary> /// Инициализация статического модуля обработки ошибок приложения /// </summary> /// <param name="logModule">уже проинициализированный объект</param> public static void InitVB(LogModule logModule) { Init(logModule, null, "Application"); }