/// <summary> /// Delete the oldest record from archive directory /// </summary> /// <param name="errtype"></param> /// <returns></returns> /// <remarks></remarks> private static bool ReduceArchive(ELogErrorType errtype) { var adir = new DirectoryInfo(PathToLogArchive); FileInfo[] zips = adir.GetFiles(ErrorZipPrefix[(int)errtype] + "*.zip"); long sumsize = 0; FileInfo oldzip = zips[0]; foreach (FileInfo cfi in zips) { sumsize += cfi.Length; if (cfi.CreationTime < oldzip.CreationTime) { oldzip = cfi; } } if ((sumsize / 1024) > MaxArchiveSize[(int)errtype]) { oldzip.Delete(); return(true); } return(false); }
protected static void LogErrorAction(Exception ex) { HttpContext ctx = HttpContext.Current; ELogErrorType errtype = ELogErrorType.OtherError; if (ex is HttpException) { var hex = (HttpException)ex; if (hex.GetHttpCode() == 500) { // If ex.InnerException IsNot Nothing Then // LogError(hex.InnerException) // Exit Sub // End If errtype = ELogErrorType.Error500; } if (hex.GetHttpCode() == 404) { var refferrer = ctx.Request.UrlReferrer; StartWorker(Log404Thread, new Pair(ctx.Request.Url.ToString(), refferrer == null ? null : refferrer.ToString())); return; } } var xError = SerializeToXml(ex, ctx); StartWorker(LogErrorThread, new ErrorThreadState { Type = errtype, XmlError = xError }); }
/// <summary> /// Return the absolute path with filename by ErrLogType /// </summary> /// <param name="type"></param> /// <returns></returns> /// <remarks></remarks> public static string GetLogFileName(ELogErrorType type) { if (_logFileNames != null) { return(_logFileNames[(int)type]); } return(HttpContext.Current.Server.MapPath(GetVirtualLogFileName(type))); }
/// <summary> /// Return the last activity date from log file /// </summary> /// <param name="errType"></param> /// <returns></returns> /// <remarks></remarks> public static DateTime GetLastActivityDate(ELogErrorType errType) { string path = GetLogFileName(errType); //if file doesn't exist return min date if (!File.Exists(path)) { return(DateTime.MinValue); } return(File.GetLastWriteTime(path)); }
/// <summary> /// Return the absolute path with filename by ErrLogType /// </summary> /// <param name="type"></param> /// <returns></returns> /// <remarks></remarks> private static string GetVirtualLogFileName(ELogErrorType type) { if (!Directory.Exists(_pathToRoot)) { Directory.CreateDirectory(_pathToRoot); Directory.CreateDirectory(string.Format("{0}{1}", _pathToRoot, "archive")); } switch (type) { case ELogErrorType.Error404: return(string.Format("{0}{1}", _absolutePathToLog, "Log_Err404.log")); case ELogErrorType.Error500: return(string.Format("{0}{1}", _absolutePathToLog, "Log_Err500.xml")); case ELogErrorType.OtherError: return(string.Format("{0}{1}", _absolutePathToLog, "Log_ErrHttp.xml")); } return(string.Format("{0}{1}", _absolutePathToLog, "Log.log")); }
private static void Archivate(ELogErrorType errtype) { string path = GetLogFileName(errtype); var sbfilename = new StringBuilder(PathToLogArchive); //checking if archive directory exists FileHelpers.CreateDirectory(sbfilename.ToString()); sbfilename.Append("\\"); sbfilename.Append(ErrorZipPrefix[(int)errtype]); sbfilename.Append(DateTime.Now.Year.ToString()); sbfilename.Append("_"); sbfilename.Append(DateTime.Now.Month.ToString()); sbfilename.Append("_"); sbfilename.Append(DateTime.Now.Day.ToString()); sbfilename.Append("_"); sbfilename.Append(DateTime.Now.Hour.ToString()); sbfilename.Append("_"); sbfilename.Append(DateTime.Now.Minute.ToString()); sbfilename.Append("_"); sbfilename.Append(DateTime.Now.Second.ToString()); sbfilename.Append(".zip"); //stream for reading using (var fs = new FileStream(path, FileMode.Open)) { var buffer = new byte[fs.Length + 1]; fs.Read(buffer, 0, buffer.Length); fs.Close(); //stream for writing and stream for compressing using (var zipfs = new FileStream(sbfilename.ToString(), FileMode.CreateNew)) { var comprZipStream = new GZipStream(zipfs, CompressionMode.Compress, true); comprZipStream.Write(buffer, 0, buffer.Length); comprZipStream.Close(); zipfs.Close(); } } }
public static void SetEnableMailNotification(bool value, ELogErrorType errtype) { MailNotify[(int)errtype] = value; }
public static bool EnableMailNotification(ELogErrorType errtype) { return(MailNotify[(int)errtype]); }
/// <summary> /// Return the last error (xml format) /// </summary> /// <param name="errtype"></param> /// <returns></returns> /// <remarks></remarks> public static string GetLastError(ELogErrorType errtype) { string path; if (errtype == ELogErrorType.Error404) { path = GetLogFileName(errtype); if (!File.Exists(path)) { return("No error"); } string str = "No error"; string lastline = ""; using (TextReader reader = new StreamReader(path)) { while (str != null) { lastline = str; str = reader.ReadLine(); } reader.Close(); } return(lastline); } if (errtype == ELogErrorType.Error500 || errtype == ELogErrorType.OtherError) { path = GetLogFileName(errtype); if (!File.Exists(path)) { return("No error"); } var xml = new XmlDocument(); try { xml.Load(path); using (var memstream = new MemoryStream()) { var xError = (XmlElement)xml.FirstChild.LastChild; var indwrtr = new XmlTextWriter(memstream, null) { Formatting = Formatting.Indented }; xError.WriteTo(indwrtr); indwrtr.Close(); var buff = memstream.GetBuffer(); memstream.Close(); var msg = Encoding.UTF8.GetString(buff); return(msg); } } catch (Exception ex) { return(ex.Message); } finally { xml = null; } } return("No error"); }