我已经使用NLog几个月了,只是登录到事件日志,但是在任何情况下都不是理想的。
我想知道,是否可以使用NLog创建自己的程序或服务日志?根据{{3}}
上支持的目标列表,它似乎不是这样有人能够对此有所了解吗?
答案 0 :(得分:2)
您可以完全创建一个存储并向您显示其他应用程序的所有日志的应用程序,但您可能需要扩展NLog,这就是我为我的工作场所所做的事情。例如:
创建一个通用数据库,如果需要,可以存储来自NLog和其他类型日志的所有日志。
制作一个自定义的布局渲染器,用你的日志信息创建一个XML(我制作系统的时候我不尝试XmlEncode LayoutRenderer,我认为现在会很棒)
找到一种通过网络发送XML的方法,我使用了Transactionnal MSMQ,但只有非事务目标存在于NLog中,所以我创建了(=使用一些增强功能复制粘贴原始文件)我自己的目标
创建接收日志XML并将其插入数据库的服务
最后,创建一个使用数据库的应用程序,向您展示环境中发生的事情
如果您有时间,这是一个强有力的解决方案。对于我们的生产环境,它可以节省很多次。但这完全取决于你的需求
*编辑2013-01-25:*
在应用程序和服务日志树中创建自己的日志:See this post解释如何创建自己的日志以及与之相关的事件源
如果事件源不存在,Nlog也可以创建事件源,但正如您在this post中看到的那样,应用程序需要读取密钥的权限:
HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\事件日志\安全
或者您只需以管理员身份运行该应用程序即可。
一旦你创建了自己的日志和他的事件源,你现在可以正常使用Nlog,配置如下:
<targets>
<target xsi:type="EventLog" name="event" layout="${message}"
machineName="." log="myLog" source="myEventSource"/>
</targets>
<rules>
<logger name="myLogger" writeTo="event"/>
</rules>
希望有所帮助