自定义错误日志记录类

引言

  这是一个简单的自定义的错误日志记录类,这里我主要用于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("调用堆栈:\n" + 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:如果需要自定义路劲的话,请自行修改哈

时间: 2024-10-14 21:26:07

自定义错误日志记录类的相关文章

lumen 自定义错误日志文件

自定义错误日志文件,改造新的方法 <?php namespace App; use Monolog\Logger; use Monolog\Handler\StreamHandler; use Monolog\Formatter\LineFormatter; class LogLib { //define static log instance. protected static $_log_instance; /** * 获取log实例 * * @return obj * @author Sp

简单的php自定义错误日志

平时经常看php的错误日志,很少有机会去自己动手写日志,看了王健的<最佳日志实践>觉得写一个清晰明了,结构分明的日志还是非常有必要的. 在写日志前,我们问问自己:为什么我们有时要记录自定义的日志呢?而不用系统默认的日志记录方式呢? 我认为有两个原因: 1.团队需要一个统一格式的日志方便管理 2.大量无用错误日志占据硬盘空间,仅需记录有意义的日志. 那么,实践一下. 1.打开你的php.ini 2.打开日志记录,将 log_errors = Off 改成 log_errors = On 3.将p

C# 创建自己的日志记录类 源码

调试及发布程序时,经常需要将一些信息输出保存,这里写了一个自己的日志记录类,记录信息更方便了.需要的话还可以进行更多的扩展,比如记录异常信息等. using System; using System.IO; namespace WindowsFormsApplication1 { public static class LogerHelper { #region 创建日志 ///-----------------------------------------------------------

【个人使用.Net类库】(2)Log日志记录类

开发接口程序时,要保证程序稳定运行就要时刻监控接口程序发送和接收的数据,这就需要一个日志记录的类将需要的信息记录在日志文件中,便于自己维护接口程序.(Web系统也是如此,只是对应的日志实现比这个要复杂一点). 刚开始考虑的比较少,没有加入控制日志文件数量的功能.运行了一段时间,文件夹内的Log文件如下所示: 如果是这样,那运行一年不就三百多个日志文件了,想一想这太可怕了.通过查找资料,发现.Net中的FileInfo存有文件的信息(包括名称,创建时间,文件大小等),那就自己定义一个文件比较器实现

PHP 自定义错误日志

<?php //错误处理函数 function myErrorHandler($errno, $errstr, $errfile, $errline) { $log_file = "./php_%s_log_".date("Ymd").".log";//定义日志文件存放目录和文件名 $template = ''; switch ($errno) { case E_USER_ERROR: $template .= "用户ERROR级

路径问题 Global文件中写入错误日志记录

“~”表示Web 应用程序根目录,“/”也是表示根目录,“../”表示当前目录的上一级目录,“./”表示当前目录 1  throw抛出异常     2 执行OnActionExecuted 方法   3执行 Global  中的 Application_Error 方法写入日志 global文件中写入  错误日志记录 protected void Application_Error(object sender,EventArgs e) { Exception lastError = Server

日志记录类LogHelper

开源日志log4net使用起来很方便,但是项目中不让用,所以自己重写了一个类,用来记录日志,比较简单. 1.首先是可以把日志分成多个类型,分别记录到不同的文件中 1 /// <summary> 2 /// 日志类型 3 /// </summary> 4 public enum LogType 5 { 6 /// <summary> 7 /// 插入型 8 /// </summary> 9 Insert, 10 /// <summary> 11 /

日志记录类(明确FileStream\Dictionary等用法)

一个好的程序对于日志的处理是必不可少的.好的日志记录可以帮助我们减少更好的查找错误和系统的维护.今天整理一下自己工作中平时用来记录日志的类,同时也补补基础知识. 功能: 根据程序App.config中配置的路径,创建日志文件并将程序的日志写到相应的文件中. 首先来看一下我之前自己写的一个用于写日志的类,源代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using

.Net Core中间件和过滤器实现错误日志记录

1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下一个组件之前和之后执行业务逻辑. 中间件是一个请求委托( public delegate Task RequestDelegate(HttpContext context) )的实例,所以中间件的本质就是一个方法,方法的参数是HttpContext,返回Task.传入的HttpContext参数包含