【问题标题】:NLog: Creating a program or service logNLog:创建程序或服务日志
【发布时间】:2013-01-06 21:14:19
【问题描述】:

我已经使用 NLog 几个月了,只是记录到事件日志中,但是在任何情况下这都不理想,恕我直言。

我想知道,是否可以使用 NLog 创建您自己的程序或服务日志?根据http://nlog-project.org/wiki/Targets上的支持目标列表,它似乎不像

有人能解释一下吗?

【问题讨论】:

  • 你能提供更多关于你想要做什么的信息吗?

标签: c# logging windows-services nlog


【解决方案1】:

您完全可以创建一个应用程序来存储并向您显示其他应用程序的所有日志,但您可能需要扩展 NLog,这就是我为我的工作场所所做的。例如:

  1. 创建一个通用数据库,该数据库可以存储 NLog 中的所有日志以及其他类型的日志(如果需要)。

  2. 制作一个自定义布局渲染器,它使用您的日志信息创建一个 XML(我在制作系统时不尝试XmlEncode LayoutRenderer,我认为现在会很棒)

  3. 找到一种通过网络发送 XML 的方法,我使用了 Transactionnal MSMQ 但 NLog 中只存在非事务目标,所以我创建了(=复制粘贴原始文件并进行了一些增强)我自己的目标

  4. 创建一个接收您的日志 XML 并将其插入数据库的服务

  5. 最后,创建一个使用数据库的应用程序,向您展示您的环境中发生的事情

如果您有时间,这是一个强有力的解决方案。对于我们的生产环境,它为我们节省了很多倍。但这取决于你到底需要什么

* 编辑 2013-01-25 : *

用于在 应用程序和服务日志 树中创建您自己的日志:See this post 解释如何创建您自己的日志以及附带的事件源

如果他不存在,Nlog 也可以创建一个事件源,但正如您在this post 中看到的那样,应用程序需要 Read 密钥权限:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security

或者您可以简单地以管理员身份运行应用程序。

一旦你创建了自己的日志和他的事件源,你现在就可以正常使用 Nlog 了,配置如下:

<targets>
  <target xsi:type="EventLog" name="event" layout="${message}"
          machineName="." log="myLog" source="myEventSource"/>
</targets>
<rules>
  <logger name="myLogger" writeTo="event"/>
</rules>

希望对你有帮助

【讨论】:

  • 我只是想让 NLog 在 Windows Eventviewer 的“程序和服务”类别下设置一个日志。
  • 对不起,我没听懂你的问题。您是否尝试在 “应用程序和服务” 树中创建个人视图,并在 EventLog 目标配置中使用带有参数 log 的视图名称?
  • 是的,我已经使用 System.Diagnostiscs 库完成了它,但我希望使用 NLog 而不是 System.Diagnostics 来实现同样的目的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2018-10-01
  • 1970-01-01
  • 2017-09-29
相关资源
最近更新 更多