我正在使用C#.net(4.5)编写一个Windows应用程序 我被要求为我的软件创建一个调试日志。 我该怎么创造它?我应该在每行之后放置调试日志代码吗?
答案 0 :(得分:2)
我该如何创建它?
指着你正确的方向。您可能希望查看日志框架,例如log4net或nlog(see comparison log4net vs nlog和here is some other frameworks)。
就个人而言,我使用log4net。我喜欢它,因为这些概念在不同的其他语言中是相似的 - Java,C ++。一旦了解了log4net,就可以轻松使用log4j或log4xx。
我应该在每行之后放置调试日志代码吗?
不,你不应该。你可以,但这通常会产生太多的调试信息。明智地使用它来输出有用的和有用的信息,这样当程序运行时,您可以阅读日志并了解事情的进展方向是错误的。
答案 1 :(得分:0)
您应该阅读有关面向方面的编程。您可以通过诸如Policy Injection Application Block,Castle,Spring.NET等库来注入此类行为。
答案 2 :(得分:0)
log4net是一个选项。你可以从NuGet获得它。
然后在你的代码中编写像
这样的语句LogManager.GetLogger("UserLog").Debug("User logged in:"+user);
您可以使用不同的级别,例如Debug,Info,Error,Fatal,并配置系统以记录到不同类型的输出,例如普通文件,db等。
答案 3 :(得分:0)
使用Enterprise Library,许多有用的功能,如:
记录应用程序阻止。
开发人员可以使用此应用程序块为其应用程序中的各种日志记录目标包含日志记录功能。此版本添加了异步日志记录功能
答案 4 :(得分:0)
一种非常简单的方法,足以满足许多(单线程)情况:
将以下方法实现为基类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()
。由debugLevel
和quiet
变量控制,您现在可以在Console
或文件中获取日志记录信息。