zoukankan      html  css  js  c++  java
  • 异常日志文件errorlong

            #region log
            ////////////////////use///////////////
            /// <summary>
            /// 异常日志
            /// </summary>
            /// <param name="ex">Exception ex</param>
            /// <param name="flagTypeRemark">异常类型备注</param>
            public void LogException(Exception ex, string flagTypeRemark = "**")
            {
                AppPath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"fileError";
                log(AppPath, "
    ##" + flagTypeRemark + "##
    Message:" + ex.Message + "
    Stacktrace:" + ex.StackTrace + "
    ");
            }
    
            /// <summary>
            /// 本地日志记录
            /// </summary>
            /// <param name="logPath">日志路径</param>
            /// <param name="logContent">要记录的日志内容</param>
            public static void log(string logPath, string logContent)
            {
                string filePath = AppPath + "elog.log";
                string content = DateTime.Now.ToString("yyyyMMddHHmmss:") + logContent;
                if (!System.IO.Directory.Exists(AppPath)) System.IO.Directory.CreateDirectory(AppPath);
                if (!System.IO.File.Exists(filePath))
                {
                    System.IO.File.AppendAllText(filePath, content);
                    return;
                }
                ParameterizedThreadStart threadStart = new ParameterizedThreadStart(writeLog);
                Thread thread = new Thread(threadStart);
                thread.Name = "Pro_ErrorLog.log";
                thread.Start(logContent);
            }
    
            /// <summary>
            /// 当前程序运行路径
            /// </summary>
            public static string AppPath { get; set; }
    
            public static void writeLog(object str)
            {
                string filePath = AppPath + "elog.log";
                string content = "
    " + DateTime.Now.ToString("yyyyMMddHHmmss:") + str.ToString();
                System.IO.FileInfo info = new System.IO.FileInfo(filePath);
                if (info.Length > 1024 * 1024 * 5)
                {
                    while (IsFileInUse(filePath))
                        Thread.Sleep(100);
                    string backPath = AppPath + @"BackError";
                    if (!System.IO.Directory.Exists(backPath)) System.IO.Directory.CreateDirectory(backPath);
                    System.IO.File.Move(filePath, backPath + "elog" + DateTime.Now.ToString("yyyyMMdd") + ".log");
                    System.IO.File.Delete(filePath);
                }
                while (IsFileInUse(filePath))
                    Thread.Sleep(100);
                if (!IsFileInUse(filePath))
                {
                    #region write file
                    System.IO.FileStream fs = null;
                    try
                    {
                        fs = new System.IO.FileStream(filePath, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.None);
                        fs.Write(Encoding.UTF8.GetBytes(content), 0, Encoding.UTF8.GetByteCount(content));
                    }
                    catch
                    {
                        ;
                    }
                    finally
                    {
                        if (fs != null)
                            fs.Close();
                    }
                    #endregion
                }
            }
    
            /// <summary>
            /// 文件是否被占用??
            /// </summary>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static bool IsFileInUse(string fileName)
            {
                bool inUse = true;
                System.IO.FileStream fs = null;
                try
                {
                    fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.None);
                    inUse = false;
                }
                catch
                {
                    inUse = true;
                }
                finally
                {
                    if (fs != null)
                        fs.Close();
                }
                return inUse;
            }
            #endregion
    //use
    LogException(ex, "异常类型备注文本");//
  • 相关阅读:
    我所理解的三次握手
    网络舆情——初步了解
    【转载】位运算的密码
    【转载】基础排序算法简介
    【原创】关于hashcode和equals的不同实现对HashMap和HashSet集合类的影响的探究
    【原创】Java移位运算
    【原创】MapReduce计数器
    【原创】Hadoop机架感知对性能调优的理解
    【原创】一个复制本地文件到Hadoop文件系统的实例
    【转载】JAVA IO 流的总结
  • 原文地址:https://www.cnblogs.com/xifengyeluo/p/8473388.html
Copyright © 2011-2022 走看看