Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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
            });
        }
Esempio n. 3
0
 /// <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)));
 }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        /// <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"));
        }
Esempio n. 6
0
        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();
                }
            }
        }
Esempio n. 7
0
 public static void SetEnableMailNotification(bool value, ELogErrorType errtype)
 {
     MailNotify[(int)errtype] = value;
 }
Esempio n. 8
0
 public static bool EnableMailNotification(ELogErrorType errtype)
 {
     return(MailNotify[(int)errtype]);
 }
Esempio n. 9
0
        /// <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");
        }