c#简单自定义异常处理日志辅助类
简单写了一个错误日志记录辅助类,记录在此。
Loghelper类
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LogHelper
{
public static class LogHelper
{
//拼接日志目录
static string appLogPath = AppDomain.CurrentDomain.BaseDirectory + "log/";
/// <summary>
/// 写入日志
/// </summary>
/// <param name="ex">异常对象</param>
public static void WriteLog(Exception ex)
{
//日志目录是否存在 不存在创建
if (!Directory.Exists(appLogPath))
{
Directory.CreateDirectory(appLogPath);
}
StringBuilder logInfo = new StringBuilder("");
string currentTime = System.DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss]");
if (ex != null)
{
logInfo.Append("\n");
logInfo.Append(currentTime + "\n");
//获取描述当前的异常的信息
logInfo.Append(ex.Message + "\n");
//获取当前实例的运行时类型
logInfo.Append(ex.GetType() + "\n");
//获取或设置导致错误的应用程序或对象的名称
logInfo.Append(ex.Source + "\n");
//获取引发当前异常的方法
logInfo.Append(ex.TargetSite + "\n");
//获取调用堆栈上直接桢的字符串表示形式
logInfo.Append( ex.StackTrace + "\n");
}
System.IO.File.AppendAllText(appLogPath + DateTime.Now.ToString("yyyy-MM-dd") + ".log", logInfo.ToString());
} }
}
测试代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LogHelper
{
class Program
{
static void Main(string[] args)
{
try
{
while (true)
{
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("您输入的是:" + a);
} }
catch (Exception ex)
{ LogHelper.WriteLog(ex);
}
Console.Write("OVER");
Console.Read();
}
}
}
日志文件结果:
[-- ::]
输入字符串的格式不正确。
System.FormatException
mscorlib
Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
在 System.Convert.ToInt32(String value)
在 LogHelper.Program.Main(String[] args) 位置 f:\SUN.TEST\LogHelper\LogHelper\Program.cs:行号
简单,可以满足日常需要。有一点就是日志文件按照日期命名,会不会随着时间越来越多。需再考虑......
c#简单自定义异常处理日志辅助类的更多相关文章
- 简单的php自定义错误日志
平时经常看php的错误日志,很少有机会去自己动手写日志,看了王健的<最佳日志实践>觉得写一个清晰明了,结构分明的日志还是非常有必要的. 在写日志前,我们问问自己:为什么我们有时要记录自定义 ...
- FFmpeg源代码简单分析:日志输出系统(av_log()等)
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- ASP.NET MVC自定义异常处理
1.自定义异常处理过滤器类文件 新建MyExceptionAttribute.cs异常处理类文件
- 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解
========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- 2.NetDh框架之简单高效的日志操作类(附源码和示例代码)
前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...
- asp.net core 自定义异常处理中间件
asp.net core 自定义异常处理中间件 Intro 在 asp.net core 中全局异常处理,有时候可能不能满足我们的需要,可能就需要自己自定义一个中间件处理了,最近遇到一个问题,有一些异 ...
- SpringBoot系列教程web篇之自定义异常处理HandlerExceptionResolver
关于Web应用的全局异常处理,上一篇介绍了ControllerAdvice结合@ExceptionHandler的方式来实现web应用的全局异常管理: 本篇博文则带来另外一种并不常见的使用方式,通过实 ...
- tp5 ThinkPHP5 自定义异常处理类
在项目的开发过程中异常抛出尤为重要不仅能够做出友好提示帮助掩盖我们伟大的程序员们尴尬的瞬间,还能做到提示开发人员代码白编写的错误,下面进行自定义异常抛出类,纯属个人理解,希望大家指正 首先在框架中我们 ...
随机推荐
- kvm解决1000M网卡问题
1.当我们安装完虚拟机, 发现虚拟机竟然是 100M 网络, 传输速率很低, 那是怎么导致的呢,如何来解决呢? 需要我们修改 vm01.xml 配置文件网卡段,添加如下红色标记行,改 为 e1000, ...
- js 操作select和option
js 操作select和option 1.动态创建select function createSelect(){ var mySelect = document.createElement_x(&qu ...
- zabbix安装排错过程
在讲安装过程之前需要先把zabbix的工作流程简单的讲一遍:zabbix是个开源监控软件,通过web才能更直观的监控我们想要监控的主机,同时,zabbix从被监控主机获取到的信息需要存放在数据库中,因 ...
- Hive variable demo
create table ori_trans (account string, maker string, tdate string) partitioned by (country string); ...
- Oracle PLSQL
Oracle :show explain plan select * from table(dbms_xplan.display); EXPLAIN PLAN FOR statements In fa ...
- 【SQL 代码】Sql分页(自用)
效果图: 下面是存储过程的创建,用的时候调用就行了 /****** Object: StoredProcedure [dbo].[spSqlPageByRownumber] Script Date: ...
- React/React Native 的ES5 ES6写法对照表
//es6与es5的区别很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component ...
- 解决linux部署项目后,第一次访问初始化数据源的时候很慢的问题
先说一下场景 测试环境是linux - centos6.5,项目是分布式的,分别搭建到linux上 数据货使用的是阿里巴巴数据源 每次重启后的第一次访问会比较慢,查看日志发现 卡在这个地方 ...{d ...
- 第2章 面向对象的设计原则(SOLID):2_里氏替换原则(LSP)
2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误 ...
- IUYYLIUIU
#include<cstdio> using namespace std; int main() { printf("IIIIU !"); ; } //http://c ...