/// <summary> /// Запись события в системный лог /// </summary> /// <param name="message">Событие</param> /// <param name="eventType">Тип события</param> /// <param name="eventID">Код события</param> /// <param name="eventCategory">Категория события</param> /// <param name="exc">Исключение</param> private static void Write( string message, EventLogerType eventType, int eventID, EventLogerCategory eventCategory, Exception exc, params Object[] p ) { if ( !_isWork ) return; StringBuilder finalMessage = new StringBuilder(); finalMessage.AppendLine( message ); finalMessage.AppendLine( "------------------------------------------------------------------------" ); //Пытаемся получить SiteContext, так как HttpContext.Current.Items не всегда есть в сборке SiteContext vSiteContext = null; var contextExist = true; try { vSiteContext = SiteContext.Current; } catch { contextExist = false; } if (vSiteContext == null) { if (contextExist) finalMessage.AppendLine( "Профиль не заполнен!" ); } else if ( SiteContext.Current.IsAnonymous ) { finalMessage.AppendLine( "Пользователь не авторизован." ); } else { finalMessage.AppendLine( "Пользователь: " + SiteContext.Current.User.UserId.ToString() + " - " + SiteContext.Current.UserDisplayName ); } try { finalMessage.AppendLine("URL: " + HttpContext.Current.Request.RawUrl); finalMessage.AppendLine("ContentType: " + HttpContext.Current.Request.ContentType); finalMessage.AppendLine("HttpMethod: " + HttpContext.Current.Request.HttpMethod); finalMessage.AppendLine("Browser: " + HttpContext.Current.Request.UserAgent); finalMessage.AppendLine("Url: " + HttpContext.Current.Request.Url); finalMessage.AppendLine("UrlReferrer: " + HttpContext.Current.Request.UrlReferrer); finalMessage.AppendLine("UserHostAddress: " + HttpContext.Current.Request.UserHostAddress); finalMessage.AppendLine("UserHostName: " + HttpContext.Current.Request.UserHostName); } catch (Exception) { //Данный try catch развернут т.к. когда объект Request не существует его нельзя проверить на = null } if ( exc != null ) { finalMessage.AppendLine(ExceptionToString(exc, false)); } StackTrace st = new StackTrace( true ); if (exc == null && p.Length == 0) { finalMessage.AppendLine( "------------------------------------------------------------------------" ); finalMessage.AppendLine("Final stack trace:"); finalMessage.AppendLine(st.ToString()); } eventLog[!SiteContext.isFranchNameAttached() ?ConfigurationManager.AppSettings["InternalFranchName"] : SiteContext._internalFranchName].WriteEntry(finalMessage.ToString(), ConvertType( eventType ), Convert.ToInt32( eventID ), Convert.ToInt16( eventCategory ) ); }
/// <summary> /// Запись события в системный лог /// </summary> /// <param name="message">Событие</param> /// <param name="eventType">Тип события</param> /// <param name="eventID">Код события</param> /// <param name="eventCategory">Категория события</param> public static void WriteToLog( string message, EventLogerType eventType, EventLogerID eventID, EventLogerCategory eventCategory, params Object[] p ) { Write( message, eventType, (int)eventID, eventCategory, null, p); }
private static EventLogEntryType ConvertType( EventLogerType eventType ) { switch ( eventType ) { case EventLogerType.Information: return EventLogEntryType.Information; case EventLogerType.Warning: return EventLogEntryType.Warning; case EventLogerType.Error: return EventLogEntryType.Error; default: return EventLogEntryType.Information; } }
/// <summary> /// Запись события в системный лог с не известной категорией /// </summary> /// <param name="message">Событие</param> /// <param name="eventType">Тип события</param> /// <param name="eventID">Код события</param> public static void WriteToLog( string message, EventLogerType eventType, EventLogerID eventID ) { WriteToLog( message, eventType, eventID, EventLogerCategory.UnknownCategory ); }