问题 NLog内部日志不能与ASP.Net MVC一起使用


我有一个问题,NLog使用此配置记录其内部日志

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  throwExceptions="true"
  internalLogFile="${basedir}/App_Data/NLog.log"
  internalLogLevel="Trace">

   <targets>
      <target name="debug"
              xsi:type="File" 
              fileName="${basedir}/App_Data/Site.log" />
   </targets>

   <rules>
      <logger name="*"
              writeTo="debug" />
   </rules>
</nlog>

目标“debug”运行良好,但是如果我将它设置为例如“D:/NLog.log”,则internalLogFile才有效。

知道为什么会这样吗?


7893
2018-02-24 09:56


起源

注意;默认路径是安装IISExpress的位置。如果指定:InternalLogFile =“nLogError.txt”。然后(至少在我的电脑上)它会尝试写入“C:\ Program Files(x86)\ IIS Express \ nlogExceptions.txt”。哪个可能有权限问题。 - OzBob


答案:


您不能在internalLogFile属性中使用布局渲染器$ {...}。它们仅用于目标布局:

<target layout="${...}" />

尝试使用相对路径,如“.. \ App_Data \ NLog.log”


12
2018-02-24 10:57



感谢你的回答。相对路径不起作用,似乎需要绝对路径。 - Swell
你错了..我在内部日志中使用$ {}它工作正常!! @Swell你可以在内部日志文件中使用$ {..} - Neel
@Neel嗯,它可能在2年后发生了变化:)你能展示你的NLog.config吗? - kolbasov
internalLogFile = “$ {specialfolder:文件夹= CommonApplicationData} /日志/ NLOG / $ {shortdate} /Nlog-Internal.log” - Neel
NLog合作者非常好的评论为什么这不是一个好主意 internalLogFile:NLog变量 - Gonzalo Contento


internalLogFile 属性需要设置为绝对路径,并且执行程序集需要具有写入该绝对路径的权限。

以下对我有用。

  1. 在某处创建一个文件夹 - 例如你的路线 c: 驱动,例如 c:\logs
  2. 编辑此文件夹的权限并完全控制每个人
  3. 设置你的nlog配置: internalLogFile="C:\logs\nlog.txt"

记得要自己清理,不要留下具有这些权限的目录


1
2018-05-01 09:40





这个链接 我认为这条路是绝对的


0
2018-03-28 10:55