我有一个记录的应用程序,当我将其部署到默认目录时,我没有得到任何基于文件的日志记录。似乎很清楚,原因是写入“c:\ program files(x86)\ blah”需要提升我的应用程序所没有的privelege级别。所以我最终告诉用户“安装到”c:\ blah“并且它会正常工作,但它看起来很垃圾。任何替代方案?
答案 0 :(得分:5)
您可以将NLog配置为记录到其他文件夹。 NLog有SpecialFolderLayoutRenderer,允许你使用.NET的special folders。您应该能够使用SpecialFolderLayoutRenderer指定日志文件名。也许这样的事情(我没试过这个):
<target name="file" xsi:type="File" layout="${longdate} | ${logger} | "${level} | ${message}" fileName="${specialfolder:folder=MyDocuments:dir=LogFiles:file=${shortdate}.log}" />
应该(如果可行)在用户的LogFiles
文件夹中的Documents
子文件夹中创建日志文件,其实际日志文件名对应于日期。我不知道,但我猜想NLog会在第一次记录任何内容时创建LogFiles文件夹。
答案 1 :(得分:3)
对我而言,它的工作原理如下:
fileName="${specialfolder:folder=ApplicationData}/newDMS ClientApplication/Logs/${shortdate}.log"