我需要在Windows Appplication中启用日志记录。哪个日志框架是最好的推荐框架? 是否有任何框架不要求用户手动输入每个日志条目?
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 :(得分: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命名空间内。
答案 1 :(得分:0)
记录不会“自动”发生,因为您始终必须告诉系统要记录的内容(无论您在何处记录)。 “自动”部分是您可以使用变量记录项目。例如,log4net(和其他日志记录引擎)允许您将异常甚至整个堆栈跟踪记录到您选择的日志存储库中。通过这种方式,您可以记录所有类型的错误,而无需手动写出错误的文本。但是,您仍需要将logger.Error(...
语句放在catch
块中。
您还可以使用内置字符串格式来填充来自自定义来源的邮件。例如,我有一个创建帐户的应用程序。我有一条INFO日志消息,记录了创建者。我这样做是通过以类似于这样的方式构建一个字符串:
logger.Info("Creating account for {0}", textblockUserName.Text);
其中textblock包含正在创建的人员的用户名。这样我每次写入时都有一个不同的条目。这使您的日志记录更加灵活,但仍然可以添加一个写入记录器的条目。
如果您想模仿Microsoft对其写入事件日志的信息所做的事情,那么就是这样做的方法。 Microsoft没有任何跟踪他们正在做什么的自动化系统。他们必须专门告诉他们的应用程序记录什么以及何时记录。您需要在应用程序中执行相同的操作。