zoukankan      html  css  js  c++  java
  • 自定义错误日志记录类

    引言

      这是一个简单的自定义的错误日志记录类,这里我主要用于API接口开发中,APP移动端的入参记录

    日志参数

    /// <summary>
        /// 日志参数
        /// </summary>
        public static class LogReq
        {
            /// <summary>
            /// 入参
            /// </summary>
            public static string LogReqStr = "";
            /// <summary>
            /// 加密后入参
            /// </summary>
            public static string DesCryptStr = "";
            /// <summary>
            /// 联众请求
            /// </summary>
            public static string LogMintInfoStr = "";
        }
    定义参数

    错误日志定义类

    public class LogClass
        {
            private string logFile;
            private StreamWriter writer;
            private FileStream fileStream = null;
            private string ReqStr = LogReq.LogReqStr;//APP请求入参
            private string DesCryptStr = LogReq.DesCryptStr;//APP请求入参[加密后]
            private string MediInfoReq = LogReq.LogMintInfoStr;//联众请求入参
            public LogClass(string fileName)
            {
                logFile = fileName;
                CreateDirectory(logFile);
            }
    
            /// <summary>
            /// 系统错误报告
            /// </summary>
            /// <param name="ex"></param>
            public void ExcLog(Exception ex)
            {
    
                try
                {
                    FileInfo fileInfo = new FileInfo(logFile);
                    if (!fileInfo.Exists)
                    {
                        fileStream = fileInfo.Create();
                        writer = new StreamWriter(fileStream);
                    }
                    else
                    {
                        fileStream = fileInfo.Open(FileMode.Append, FileAccess.Write);
                        writer = new StreamWriter(fileStream);
                    }
                    writer.WriteLine("当前时间:" + DateTime.Now);
                    writer.WriteLine("加密后入参:" + DesCryptStr);
                    writer.WriteLine("入参信息:" + ReqStr);
                    writer.WriteLine("联众请求入参:" + MediInfoReq);
                    writer.WriteLine("异常信息:" + ex.Message);
                    writer.WriteLine("异常对象:" + ex.Source);
                    writer.WriteLine("调用堆栈:
    " + ex.StackTrace.Trim());
                    writer.WriteLine("触发方法:" + ex.TargetSite);
                    writer.WriteLine();
                    writer.Close();
    
                }
                finally
                {
                    if (writer != null)
                    {
                        writer.Close();
                        writer.Dispose();
                        fileStream.Close();
                        fileStream.Dispose();
                    }
                }
            }
    
            /// <summary>
            /// 自定义错误报告
            /// </summary>
            /// <param name="ex"></param>
            public void ExcLog(CustomerException ex)
            {
    
                try
                {
                    FileInfo fileInfo = new FileInfo(logFile);
                    if (!fileInfo.Exists)
                    {
                        fileStream = fileInfo.Create();
                        writer = new StreamWriter(fileStream);
                    }
                    else
                    {
                        fileStream = fileInfo.Open(FileMode.Append, FileAccess.Write);
                        writer = new StreamWriter(fileStream);
                    }
                    writer.WriteLine("当前时间:" + DateTime.Now);
                    writer.WriteLine("入参信息:" + ReqStr);
                    writer.WriteLine("加密后入参:" + DesCryptStr);
                    writer.WriteLine("联众请求入参:" + MediInfoReq);
                    writer.WriteLine("异常代码:" + (int)ex.Code);
                    writer.WriteLine("异常信息:" + ex.Msg);
                    writer.WriteLine();
                    writer.Close();
    
                }
                finally
                {
                    if (writer != null)
                    {
                        writer.Close();
                        writer.Dispose();
                        fileStream.Close();
                        fileStream.Dispose();
                    }
                }
            }
    
            public void CreateDirectory(string infoPath)
            {
                DirectoryInfo directoryInfo = Directory.GetParent(infoPath);
                if (!directoryInfo.Exists)
                {
                    directoryInfo.Create();
                }
            }
        }
    错误日志类

    使用例子(指定路径)

      var log = new Log.LogClass("E:\website\NanChang\ExcLog\" + DateTime.Now.ToString("yyyyMMdd") + "_Log.txt");
      log.ExcLog(ex);

    PS:如果需要自定义路劲的话,请自行修改哈

    真正的谦卑是对真理持续不断的追求。
  • 相关阅读:
    白话LINQ系列2以代码演进方式学习LINQ必备条件
    《Entity Framework 6 Recipes》中文翻译系列 (9) 第二章 实体数据建模基础之继承关系映射TPH
    Linq To Sqlite 一一二二
    《Entity Framework 6 Recipes》中文翻译系列 (10) 第二章 实体数据建模基础之两实体间Isa和Hasa关系建模、嵌入值映射
    《Entity Framework 6 Recipes》中文翻译系列 (14) 第三章 查询之查询中设置默认值和存储过程返回多结果集
    《Entity Framework 6 Recipes》中文翻译系列 (13) 第三章 查询之使用Entity SQL
    白话LINQ系列1什么是LINQ?
    《Entity Framework 6 Recipes》翻译系列 (3) 第二章 实体数据建模基础之创建一个简单的模型
    JS 实现trim()
    mysql表切换引擎的几种方法
  • 原文地址:https://www.cnblogs.com/huanghzm/p/5242870.html
Copyright © 2011-2022 走看看