异常处理 日志打印

		 private static object OperationLogs_obj = new object();
        /// <summary>
        /// 操作日志打印  
        /// </summary>  
        public static void OperationLogs(string set, string value ,string LogAddress = "")
        { 
            string filePath = Environment.CurrentDirectory + "\\" + "OperationLog";
            string fileName = DateTime.Now.ToString("yyyyMMdd") + ".Log";
            string filePathAll = filePath + "\\" + fileName;
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }

            lock (OperationLogs_obj)
            {
                if (FileIsUsed(filePathAll) == false)
                {
                    //把信息输出到文件    
                    StreamWriter fs = new StreamWriter(filePathAll, true); 
                    fs.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + " =====>> 调用接口:" + set);
                    fs.WriteLine("参数:" + value + "\n");
                    fs.WriteLine();
                    fs.Close();
                }
            }
        }

        private static object WriteLog_obj = new object();
        /// <summary>
        /// 异常处理
        /// </summary> 
        public static void WriteLog(Exception ex, string LogAddress = "")
        {

            string filePath = Environment.CurrentDirectory + "\\" + "OperationLog";
            string fileName = DateTime.Now.ToString("yyyyMMdd") + "Debug.Log";
            string filePathAll = filePath + "\\" + fileName;
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }
            lock (WriteLog_obj)
            {
                if (FileIsUsed(filePathAll) == false)
                {
                    //把异常信息输出到文件    
                    StreamWriter fs = new StreamWriter(LogAddress, true);
                    fs.WriteLine("当前时间:" + DateTime.Now.ToString());
                    fs.WriteLine("异常信息:" + ex.Message);
                    fs.WriteLine("异常对象:" + ex.Source);
                    fs.WriteLine("调用堆栈:" + ex.StackTrace.Trim());
                    fs.WriteLine("触发方法:" + ex.TargetSite + "\n");
                    fs.WriteLine();
                    fs.Close();
                }
            }

        }

        /// <summary>
        /// 返回指示文件是否已被其它程序使用的布尔值
        /// </summary>
        /// <param name="fileFullName">文件的完全限定名,例如:“C:\MyFile.txt”。</param>
        /// <returns>如果文件已被其它程序使用,则为 true;否则为 false。</returns>
        public static Boolean FileIsUsed(String fileFullName)
        {
            Boolean result = false;

            //判断文件是否存在,如果不存在,直接返回 false
            if (!File.Exists(fileFullName))
            {
                result = false;

            }//end: 如果文件不存在的处理逻辑
            else
            {//如果文件存在,则继续判断文件是否已被其它程序使用

                //逻辑:尝试执行打开文件的操作,如果文件已经被其它程序使用,则打开失败,抛出异常,根据此类异常可以判断文件是否已被其它程序使用。
                FileStream fileStream = null;
                try
                {
                    fileStream = File.Open(fileFullName, FileMode.Open, FileAccess.ReadWrite, System.IO.FileShare.None);

                    result = false;
                }
                catch (IOException ioEx)
                {
                    result = true;
                }
                catch (Exception ex)
                {
                    result = true;
                }
                finally
                {
                    if (fileStream != null)
                    {
                        fileStream.Close();
                    }
                }

            }//end: 如果文件存在的处理逻辑

            //返回指示文件是否已被其它程序使用的值
            return result;

        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值