2011-06-16 62 views
1

我需要在Windows应用程序中启用登录。哪个日志框架是最好的推荐之一? 是否有任何框架不需要用户手动输入每个日志条目?在Windows应用程序中自动登录

logger.Info("I don't want to write a log entry like this."); 
logger.Debug("I don't want to write a log entry like this also."); 
logger.Fatal("Is there any way to avoid this kind of manual log entry writing?"); 

除log4net之外是否还有其他任何记录器框架,以便我可以实现此目的?或者是log4net能够做到这一点?

+0

您是否在寻找一个猜测您想要登录的日志库?值得添加这个作为log4net功能请求... – 2011-06-16 11:54:45

+0

@ gigantt.com:我的意思是:现在无论我们在一个寡妇操作系统上做什么都被捕获并登录到本地机器的事件查看器应用程序日志中。所以我想知道是否有任何类似的日志记录框架.. – Sandeep 2011-06-16 11:57:29

+0

那些事件查看器错误并不奇迹般地到达那里(微软很好,但不是那么好)。微软可能有类似于上面的代码。 – 2011-06-16 12:02:06

回答

0

@ user762730:你问如何将消息记录到机器的事件日志中吗?如果是这样,你可以完成很少的代码行。

if (!EventLog.SourceExists("Application Name")) 
    EventLog.CreateEventSource("Application Name", "Application"); 

var myLog = new EventLog { Source = "Application Name" }; 
myLog.WriteEntry(errorMsg + ex.Message + "\n\nStack Trace:\n" + ex.StackTrace); 

EventLog类型位于System.Diagnostics命名空间中。

0

记录不会“自动”发生,因为您始终必须告诉系统记录什么(无论您在哪里登录)。 “自动”部分是您可以使用变量记录项目。例如,log4net(和其他日志引擎)允许您将异常甚至整个堆栈跟踪记录到您选择的日志存储库。通过这种方式,您可以记录所有类型的错误,而无需手动输出错误文本。但是,您仍然需要将logger.Error(...声明放入您的catch块中。

您还可以使用内置的字符串格式来填充自定义来源的消息。例如,我有一个创建帐户的应用程序。我有一个INFO日志消息记录谁正在创建。我这样做是在一个类似的方式建立一个字符串:

logger.Info("Creating account for {0}", textblockUserName.Text); 

在文本块中包含的人的用户名被创建。这样我就有一个条目每次写入都会有所不同。这使得您的日志记录更加灵活,但它仍然归结于添加写入记录器的条目。

如果你想模仿微软用他们写入事件日志的信息做什么,这就是实现它的方法。微软没有任何跟踪他们正在做什么的自动化系统。他们必须具体告诉他们的应用程序记录什么时间和什么时候。你需要在你的应用程序中做同样的事情。