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

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#简单自定义异常处理日志辅助类的更多相关文章

  1. 简单的php自定义错误日志

    平时经常看php的错误日志,很少有机会去自己动手写日志,看了王健的<最佳日志实践>觉得写一个清晰明了,结构分明的日志还是非常有必要的. 在写日志前,我们问问自己:为什么我们有时要记录自定义 ...

  2. FFmpeg源代码简单分析:日志输出系统(av_log()等)

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  3. ASP.NET MVC自定义异常处理

    1.自定义异常处理过滤器类文件 新建MyExceptionAttribute.cs异常处理类文件

  4. 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解

    ========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...

  5. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  6. 2.NetDh框架之简单高效的日志操作类(附源码和示例代码)

    前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...

  7. asp.net core 自定义异常处理中间件

    asp.net core 自定义异常处理中间件 Intro 在 asp.net core 中全局异常处理,有时候可能不能满足我们的需要,可能就需要自己自定义一个中间件处理了,最近遇到一个问题,有一些异 ...

  8. SpringBoot系列教程web篇之自定义异常处理HandlerExceptionResolver

    关于Web应用的全局异常处理,上一篇介绍了ControllerAdvice结合@ExceptionHandler的方式来实现web应用的全局异常管理: 本篇博文则带来另外一种并不常见的使用方式,通过实 ...

  9. tp5 ThinkPHP5 自定义异常处理类

    在项目的开发过程中异常抛出尤为重要不仅能够做出友好提示帮助掩盖我们伟大的程序员们尴尬的瞬间,还能做到提示开发人员代码白编写的错误,下面进行自定义异常抛出类,纯属个人理解,希望大家指正 首先在框架中我们 ...

随机推荐

  1. Java基础の乱弹琴一:assert关键字

    一.概述 assert:表示断言 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默 ...

  2. (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

    昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...

  3. Storm 基础知识

    分布式的实时计算框架,storm对于实时计算的意义类似于hadoop对于批处理的意义. Storm的适用场景: 1.流数据处理:storm可以用来处理流式数据,处理之后将结果写到某个存入中去. 2.持 ...

  4. DW与DM

    DW组成部分简介 DW的组成部分有:针对数据源的分析.数据的ETL.数据的存储结构,元数据管理等. 数据源分析 主要是分析要抽取哪些数据,如何抽取(全量还是增量)?它的更新周期是怎么样的?它的数据质量 ...

  5. MongoDB配置多个ConfigDB的问题(笔记)

    由于在部署集群之前没有做好的规划,在集群中只有一个configserver和一个mongos.网上都推荐多个configserver,本人在使用的过程中发现在启动mongos进程时,congfigdb ...

  6. cnblogs美化及插件

    1.vp计数 http://www.amazingcounters.com 2.来源地图 http://clustrmaps.com 2.1来源地图 http://www.flagcounter.co ...

  7. hdu1047 Integer Inquiry

    /* Integer Inquiry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  8. hdu-5927 Auxiliary Set(树形dp)

    题目链接: Auxiliary Set Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  9. React 之 Hello world

    一入react深似海,从此学习为常态,react 成为了一种趋势,很多人应该很多人准备进坑,下面对react进行简单的描述: 首先学习react,要有多方学习的准备,例如:Webpack, Babel ...

  10. 查询OOP课程

    --检测有没有名称为MySchool的数据库 use master if exists (select * from sysdatabases where name='myschool') begin ...