c#简单自定义异常处理日志辅助类

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 简单写了一个错误日志记录辅助类,记录在此。

    Loghelper类

   

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace LogHelper
 9 {
10     public static class LogHelper
11     {
12         //拼接日志目录
13         static string appLogPath = AppDomain.CurrentDomain.BaseDirectory + "log/";
14         /// <summary>
15         /// 写入日志
16         /// </summary>
17         /// <param name="ex">异常对象</param>
18         public static void WriteLog(Exception ex)
19         {
20             //日志目录是否存在 不存在创建
21             if (!Directory.Exists(appLogPath))
22             {
23                 Directory.CreateDirectory(appLogPath);
24             }
25             StringBuilder logInfo = new StringBuilder("");
26             string currentTime = System.DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss]");
27             if (ex != null)
28             {
29                 logInfo.Append("\n");
30                 logInfo.Append(currentTime + "\n");
31                 //获取描述当前的异常的信息
32                 logInfo.Append(ex.Message + "\n");
33                 //获取当前实例的运行时类型
34                 logInfo.Append(ex.GetType() + "\n");
35                 //获取或设置导致错误的应用程序或对象的名称
36                 logInfo.Append(ex.Source + "\n");
37                 //获取引发当前异常的方法
38                 logInfo.Append(ex.TargetSite + "\n");
39                 //获取调用堆栈上直接桢的字符串表示形式
40                 logInfo.Append( ex.StackTrace + "\n");
41             }
42             System.IO.File.AppendAllText(appLogPath + DateTime.Now.ToString("yyyy-MM-dd") + ".log", logInfo.ToString());
43         }
44 
45     }
46 }
复制代码

测试代码:

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace LogHelper
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             try
14             {
15                 while (true)
16                 {
17                     int a = Convert.ToInt32(Console.ReadLine());
18                     Console.WriteLine("您输入的是:" + a);
19                 }
20 
21             }
22             catch (Exception ex)
23             {
24 
25                 LogHelper.WriteLog(ex);
26             }
27             Console.Write("OVER");
28             Console.Read();
29         }
30     }
31 }
复制代码

日志文件结果:

复制代码
1 [2013-09-24 11:15:45]
2 输入字符串的格式不正确。
3 System.FormatException
4 mscorlib
5 Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
6    在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
7    在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
8    在 System.Convert.ToInt32(String value)
9    在 LogHelper.Program.Main(String[] args) 位置 f:\SUN.TEST\LogHelper\LogHelper\Program.cs:行号 17
复制代码

      简单,可以满足日常需要。有一点就是日志文件按照日期命名,会不会随着时间越来越多。需再考虑......

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转自:http://www.cnblogs.com/wolf-sun/p/3336533.html
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
3月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
93 2
|
1月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
53 1
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
57 2
|
2月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
16 0
|
3月前
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
53 0
|
3月前
|
C# 数据安全/隐私保护
C# 一分钟浅谈:类与对象的概念理解
【9月更文挑战第2天】本文从零开始详细介绍了C#中的类与对象概念。类作为一种自定义数据类型,定义了对象的属性和方法;对象则是类的实例,拥有独立的状态。通过具体代码示例,如定义 `Person` 类及其实例化过程,帮助读者更好地理解和应用这两个核心概念。此外,还总结了常见的问题及解决方法,为编写高质量的面向对象程序奠定基础。
35 2
|
3月前
|
Shell Python
salt自定义模块内使用日志例子
salt自定义模块内使用日志例子
|
4月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
4月前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录是一个重要而复杂的问题。
微信小程序作为业务拓展的新渠道,其全栈开发涉及前端与后端的紧密配合。本文聚焦小程序开发中的异常处理与日志记录,从前端的网络、页面跳转等异常,到后端的数据库、API调用等问题,详述了如何利用try-catch及日志框架进行有效管理。同时强调了集中式日志管理的重要性,并提醒开发者注意安全性、性能及团队协作等方面,以构建稳定可靠的小程序应用。
78 1