如何在c#中创建调试日志

本文关键字:创建 调试 日志 | 更新日期: 2023-09-27 17:49:52

我正在用c# .net(4.5)编写一个windows应用程序。我被要求为我的软件创建一个调试日志。我如何创建它??我应该把调试日志代码每行后??

如何在c#中创建调试日志

如何创建它?

只是给你指出一个正确的方向。您可能想要查看日志框架,例如log4net或nlog(请参阅log4net与nlog的比较,这里是其他一些框架)。

我个人使用log4net。我喜欢它,因为它的概念在其他不同的语言中是相似的——Java、c++。一旦您了解了log4net,就可以轻松地使用log4j或log4xx。

我应该把调试日志代码放在每行之后吗?

不,你不应该。可以,但是那样通常会产生太多的调试信息。明智地使用它来输出有用的有用的信息,这样当你的程序运行时,你可以阅读日志并了解事情什么时候往错误的方向发展。

您应该阅读面向方面的编程。你可以通过诸如Policy Injection Application Block、Castle、Spring之类的库注入这种行为。净等等。

log4net是一种选择。你可以从NuGet得到它。

然后在你的代码中写这样的语句

LogManager.GetLogger("UserLog").Debug("User logged in:"+user);

您可以使用不同的级别,如Debug, Info, Error, Fatal,并配置系统日志到不同类型的输出,如plain file, db等。

使用企业库,许多有用的功能,如:
日志应用程序块。
开发人员可以使用这个应用程序块在他们的应用程序中为广泛的日志目标包含日志功能。这个版本增加了异步日志记录功能。

一个非常简单的方法,足以满足许多(单线程)情况:

实现以下方法作为一个基类Util的静态方法:

class Util
    {
        public static bool quiet;                //  flag to shut off o() Console output
        public static StreamWriter fOut;         //  the output file for o()
        public static int debugLevel = 2;
        public static void o(string s)
        {    
            if (!quiet)
            {
                Console.WriteLine(s);
            }
            if (fOut != null)
            {
                fOut.WriteLine(s);
            }
        }
        public static void o2(string s)
        {
            if (debugLevel >= 2)
            {
                o(s);
            }
        }
}

你现在可以继承这个基类到任何你想要调试的类,并分散对o()的调用。在debugLevelquiet变量的控制下,您现在可以在Console或文件中获得日志信息。