Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging windows应用程序中的自动登录_Logging_Log4net_Windows - Fatal编程技术网

Logging windows应用程序中的自动登录

Logging windows应用程序中的自动登录,logging,log4net,windows,Logging,Log4net,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 manua

我需要在我的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能够做到这一点吗?

@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);

事件日志类型位于System.Diagnostics命名空间中

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

您还可以使用内置字符串格式来填充来自自定义源的消息。例如,我有一个创建帐户的应用程序。我有一条信息日志消息,记录谁被创建。我通过以下类似方式构建字符串来实现此目的:

logger.Info("Creating account for {0}", textblockUserName.Text);
其中textblock包含被创建人的用户名。这样我就有了一个条目,每次写入时都会有所不同。这使您的日志记录更加灵活,但归根结底还是要添加一个写入日志的条目


如果您想模仿Microsoft对写入事件日志的信息所做的操作,这是一种方法。微软没有任何自动系统来跟踪他们正在做的事情。他们必须明确告诉他们的应用程序要记录什么以及什么时候记录。您需要在应用程序中执行相同的操作。

您是否需要一个日志库来猜测您希望记录的内容?值得将此添加为log4net功能请求…。@gigantt.com:我的意思是:现在我们在Widows OS上所做的任何事情都会被捕获并记录到本地机器的事件查看器应用程序日志中。所以我想知道是否有类似的日志框架..那些事件查看器错误并没有神奇地出现--微软很好,但没有那么好。微软可能也有类似的代码。