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
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
6月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
457 52
|
5月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
394 11
|
12月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
357 8
|
7月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
SAE(Serverless应用引擎)是阿里云推出的全托管PaaS平台,致力于简化微服务应用开发与管理。为满足用户对可观测性和运维能力的更高需求,SAE引入Sidecar容器技术,实现日志采集、监控指标收集等功能扩展,且无需修改主应用代码。通过共享资源模式和独立资源模式,SAE平衡了资源灵活性与隔离性。同时,提供全链路运维能力,确保应用稳定性。未来,SAE将持续优化,支持更多场景,助力用户高效用云。
|
10月前
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
156 13
|
11月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
217 1
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
170 2
|
12月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
84 0
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
166 0
|
Shell Python
salt自定义模块内使用日志例子
salt自定义模块内使用日志例子

热门文章

最新文章