项目中经常需要使用到对软件发生错误的日志记录,关于此,很多公司及组织已经做了很多工作,比如可以使用Microsoft提供的Microsoft Enterprise Library January 2006(最新版为2007APril,但是个人现在习惯于使用2006版,版 本为2.0)中的日志记录模块或是开源项目NLOG等,这些东东一般来说功能都比较强大,但是上手可能并不是那么容易,其实一般来说我们主要需要记录的信息无非是发生错误的时间及出错原因及其他一些方便我们查找程序错误所需要的内容,我们可以让它记录到一个文本文件中,这样即时软件发布到客户手中使用时,如果在使用过程中发生什么错误,我们可以要求客户提供此错误日志供我们查错使用,下面说说我在项目中使用的错误日志记录功能的一些实现方法,
1.先定义一个记录错误日志的类,类内容如下
using System.IO;
namespace CSST.WMS.UI.Utility
{
/**//// <summary>
/// 文本日志记录类,成员函数均为静态函数,直接调用即可
/// </summary>
public class LogMsg
{
常量定义#region 常量定义
/**//// <summary>
/// 程序目录名
/// (一般根据需要修改此变量值即可)
/// </summary>
private const string FolderName = "EventLog";
/**//// <summary>
/// 日志文件名
/// (全名或后缀名,按日分类时为后缀名)
/// </summary>
private const string logFileName = "Log.Log";
#endregion
构造函数#region 构造函数
/**//// <summary>
/// 私有构造函数,不允许直接实例化
/// </summary>
private LogMsg()
{
//
}
#endregion
记录错误日志到文本文件到我的文档目录#region 记录错误日志到文本文件到我的文档目录
/**//// <summary>
/// 记录错误日志到文本文件到我的文档目录
/// 按月分,每月产生一个日志文件
/// </summary>
/// <param name="text">日志内容</param>
static public void WriteLogToApplicationFolderByMonth(string text)
{
//string folderPath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\My Tests\\Log1";
//格式化文件夹字符串
string folderPath = string.Format("{0}\\{1}\\Year_{2}", System.Windows.Forms.Application.StartupPath, FolderName, System.DateTime.Now.ToString("yyyy"));
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
//格式化文件路径字符串
string filePath = string.Format("{0}\\Month_{1}_{2}", folderPath, System.DateTime.Today.ToString("MM"), logFileName);
LogToFile(filePath, text);
}
#endregion
记录文本到文本文件#region 记录文本到文本文件
/**//// <summary>
/// 记录文本到文本文件(根据微软MSDN2005帮助文档System.IO.File.AppendText()提供的示例修改)
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="text">记录内容</param>
static private void LogToFile(string filePath, string text)
{
//-------------------
StreamWriter sw = null;
try
{
if (!File.Exists(filePath))
{
sw = File.CreateText(filePath);
}
else
{
sw = File.AppendText(filePath);
}
//设置写入文件的文本
//string msg = string.Format("{0}---------Log Time:{1}--------{0}{2}", System.Environment.NewLine, System.DateTime.Now.ToString(), text);
string msg = string.Format("\r\n---------Log Time:{0}--------\r\n{1}", System.DateTime.Now.ToString(), text);
sw.WriteLine(msg);
//sw.WriteLine(text);
}
finally
{
if (sw != null)
{
sw.Close();
sw = null;
}
}
}
#endregion
//-------------
}
}
记录错误内容同时记录下出错时间,方便程序查错
2.在确认可能产生错误地方使用以下语捕获错误并记录到日志
try
{
dt = CSST.WMS.DAL.DealerDAL.SelectAll().Tables[0];
this.dataGridView.DataSource = dt;
}
catch (SqlException ex)
{
Utility.LogMsg.WriteLogToApplicationFolderByMonth(ex.ToString());
}
catch (Exception ex)
{
Utility.LogMsg.WriteLogToApplicationFolderByMonth(ex.ToString());
}
3.一般来说并不是所有的错误我们都可以捕获得到,这种情况下,我们可以为Application的ThreadException事件编写错误日志记录功能来实记录下所有在运行时发生的错误...
分享到:
相关推荐
本文将深入探讨如何使用VC++实现一个高效、灵活的日志记录类,特别是针对多线程环境下的日志管理。 首先,我们要理解日志记录的基本概念。日志是程序运行过程中产生的事件或消息的记录,包括错误信息、警告信息、...
标题“日志记录类”暗示我们关注的是一个专为C++设计的日志系统,该系统可能具有记录不同级别日志的能力,例如调试(DEBUG)、信息(INFO)、警告(WARNING)、错误(ERROR)和致命错误(FATAL)。这类日志记录类...
标题提到的"多线程调试日志记录类"是专为解决这类问题而设计的。这个类可能包含以下关键知识点: 1. **多线程**:多线程编程允许应用程序同时执行多个任务,提高资源利用率和程序响应速度。但在多线程环境中,同步...
本篇文章将深入探讨Windows日志记录类,并结合提供的资源,讲解如何在C++环境中利用Visual Studio 2005进行日志记录。 首先,Windows提供了Event Log API供开发者使用,通过这个API可以方便地向系统事件查看器写入...
本文将深入探讨如何在C# .NET环境下有效地实现错误日志记录。 首先,了解错误日志的基本概念。错误日志是程序运行过程中记录的异常信息,包括错误类型、发生时间、堆栈跟踪等,它为调试和性能优化提供了关键数据。...
日志记录(log recording)是软件开发中的一个重要环节,它有助于调试、监控和故障排查。本篇文章将深入探讨如何在VC++、C++和MFC环境下实现日志功能。 1. **日志的基本概念** - 日志是记录程序运行过程中的事件、...
这篇博客"日志记录类(将日志保存在一个文件中)"可能详细讨论了如何创建一个自定义的日志类,用于将程序中的日志信息保存到本地文件中。以下是对这个主题的详细解释: 首先,我们来理解日志的基本概念。日志是程序...
标题中的"C# 日志记录类 Log4N"指的是一个专门用于C#项目的日志记录工具,Log4N。这个工具的核心思想是使日志记录简单易用,同时又具备高度的定制性和灵活性。Log4N提供了丰富的功能,包括不同级别的日志输出(如...
本文将深入探讨一个名为"MyLog"的实用日志记录类,该类专为C++设计,具备多线程写入日志的能力,并且提供了便捷的宏调用功能。 首先,让我们理解一下日志记录的基本概念。日志是程序运行过程中的事件记录,包含了...
错误日志记录了数据库服务器在运行过程中遇到的问题、警告以及重要事件,帮助管理员了解系统的健康状况,并在出现问题时定位和解决问题。 1. **错误日志的分类** - **Windows事件日志**:Windows操作系统提供了...
错误日志是系统在运行过程中记录的各种异常、故障和警告信息,通过分析这些日志,我们可以定位问题的根源,进行故障排除,优化性能,甚至预防未来可能出现的问题。下面我们将深入探讨错误日志收集的相关知识点。 ...
在Visual C++ (VC++) 开发环境中,创建一个日志记录类是常见的需求,它能够帮助程序员跟踪程序运行过程中的事件、错误和调试信息。这个压缩包文件"visual c++ vc制作一个日志记录类.zip"包含了一个实现日志功能的...
本封装好的基于log4cpp的日志记录类,使得在C++项目中集成日志系统变得更加便捷。 Log4cpp库的设计理念源自Java的log4j,它提供了一个层次化的日志记录框架,允许用户根据需要调整日志级别、定义日志输出格式,并...
- **使用AOP(面向切面编程)**:通过如Unity或Autofac等依赖注入容器,结合AOP特性,可以在不修改业务代码的情况下插入日志记录代码。 4. **日志记录的内容** - **请求信息**:包括HTTP方法(GET、POST等)、URL...
《深入解析:基于VS2010 MFC的日志记录类——log4z》 在软件开发中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行过程中的错误、调试问题以及监控系统状态。本篇文章将围绕"VS2010 MFC写的log4z日志...
在QT框架中添加操作日志记录是软件开发过程中的一个重要环节,这有助于调试、问题排查以及系统监控。本文将详细讲解如何在QT项目中实现这一功能,以本地生成TXT文件的形式记录日志内容。 首先,我们需要理解QT中的...
在MFC中实现日志记录功能是调试和问题排查的重要手段,可以帮助开发者跟踪程序运行时的状态,尤其是在遇到错误或异常时。下面我们将详细探讨MFC日志记录的相关知识点。 首先,日志记录的基本概念是将程序运行过程中...
2.日志文件: 根据提供的名称在当前工作目录下生成日志文件,文件名与日志记录器名称相同。 3.控制台输出: 日志信息可以实时输出到控制台,方便开发过程中的实时查看。 4.格式化: 日志信息以标准格式输出,包括时间戳...
错误日志记录是软件开发中不可或缺的一环,它有助于开发者追踪和诊断程序运行时的问题。在.NET环境中,log4net是一个广泛使用的日志记录框架,它提供了强大的灵活性和配置选项,使得日志信息可以根据需要输出到不同...
本程序实现了一种错误日志系统,通过自定义宏,能够在发生错误时记录下错误发生的具体位置,包括所在函数、行数等关键信息。以下是对这个系统的详细解释和相关知识点的介绍。 1. **错误日志的基本概念**: 错误日志...