代码之家  ›  专栏  ›  技术社区  ›  Omortis

无法让NLog引发异常或写入日志(在我的计算机上工作)

  •  1
  • Omortis  · 技术社区  · 6 年前

    我的工作站(Win10,IIS 10)上运行着一个.Net webapi,一切工作都很有魅力。但是,当我把它推到我们的生产框(Win7,IIS 6)时,NLog既不会写日志,也不会抛出异常。我的NLog.config在这里:

     <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          throwExceptions="true"
       >
    
      <targets async="true">
        <target
          name="logfile"
          xsi:type="File"
          layout="${date}|${level:uppercase=true}${message}"
          fileName="C:\inetpub\wwwroot\myapp\App_Data\webapi.log"
        />
      </targets>
    
      <rules>
        <logger name="*" minlevel="Debug" writeTo="logfile" />
      </rules>
    </nlog>
    

    不管我设置了什么 fileName 属性,它将不会在Win7框上写入日志,也不会引发异常。我会在“Windows日志->系统”下的事件查看器中看到异常,对吗?

    请注意,我对目标Win7框没有管理权限,但有足够的提升权限将文件写入wwwroot。

    我错过了什么?一个异常或某种类型的错误是很好的。

    编辑:事实上,它在IIS10/Win10上根本不起作用,尽管它在Visual Studio(IIS Express?)中运行时工作得很好。Visual Studio和IIS管理器都以“管理员”身份运行。没有日志文件输出,没有异常,事件查看器中没有任何内容。???

    1 回复  |  直到 6 年前
        1
  •  1
  •   Julian    6 年前

    上有一个NLog故障排除指南 https://github.com/NLog/NLog/wiki/Logging-Troubleshooting

    当您没有从NLog获得日志输出时,这可能是由于以下原因:

    • NLog找不到配置文件。当NLog.config文件配置为 Build Action = None Copy to Output Directory = Do not copy 在Visual Studio中。套 Build Action = Content "Copy to Output Directory = Copy if newer 解决这个问题)
    • 配置文件是否有效XML?
    • 日志记录规则不正确或未定义规则
    • 应用程序跟踪代码不正确。
    • 目标存在运行时问题(例如缺少权限)
    • 日志将写入其他位置。

    还可以启用内部日志: https://github.com/NLog/NLog/wiki/Internal-logging

    更新 :如果您的内部日志不起作用,则很难诊断该问题。

    您可以启用从代码引发异常:

    LogManager.ThrowExceptions = true;
    LogManager.ThrowConfigExceptions = true;