bea*_*man 7 logging windows-services nlog windows-server-2008-r2
当使用"NT AUTHORITY\NETWORK SERVICE"凭据启动我的Windows服务时,我遇到了NLog的一个奇怪问题:如果文件名包含点,它根本不会将任何内容记录到文件目标.
我在启用了.NET Framework 3.5 SP1功能的WinServer 2008 R2 Standard上运行Windows服务,NLog.config如下:
<targets>
<target xsi:type="File"
name="f"
fileName="${basedir}/logs/${shortdate}.txt"
encoding="utf-8"
concurrentWrites="true"
keepFileOpen="false"
layout="${longdate} ${uppercase:${level}} ${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索和实验配置后,我想出了一个解决方法,不在fileName参数中包含文件扩展名,它工作得很好,这解决了问题,但看起来不是一个像样的解决方案.
是什么让这个问题看起来更像是一个奇怪的魔术我是这样的事实,我设法解决了我的第二个Windows服务的配置中的日志文件扩展问题(它在相同的机器上运行相同的credenials)简单地通过更改项目选项中的装配信息.
有任何想法吗?
bea*_*man 14
启用NLog的内部日志文件后
<nlog
internalLogFile="c:\temp\nlogproblems.txt"
throwExceptions="true"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Run Code Online (Sandbox Code Playgroud)
我设法抓住了 UnathorizedAccessException
2013-04-17 11:06:14.0445 Error Exception in asynchronous handler
NLog.NLogRuntimeException: Exception occurred in NLog --->
System.UnauthorizedAccessException: Access is denied.
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Run Code Online (Sandbox Code Playgroud)
这导致我应该修复logs文件夹权限的结论.
最后没有更奇怪的魔法,我只需要允许NETWORK SERVICE写入logs文件夹.
| 归档时间: |
|
| 查看次数: |
7147 次 |
| 最近记录: |