ASP.NET MVC -未找到NLog文件目标

llycmphe  于 2023-03-31  发布在  .NET
关注(0)|答案(3)|浏览(198)

我的NLog有问题。我在Nlog.config文件中配置了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" 
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Trace"
      internalLogFile="d:\temp\nlog-internal.log">

  <target xsi:type="File" name="log" fileName="${basedir}\logs\${date:format=dd}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />

  <rules> 
    <logger name="*" minlevel="Debug" writeTo="log" />

  </rules>
</nlog>

我得到一个错误,目标日志未找到。我真的不知道我该怎么办,也许有人有类似的问题。
我用的是.NET 4.5。
配置文件在项目的主目录下,我在目录中设置了完全访问权限。
我尝试将配置移到web.config文件中,但错误仍然出现。

2016-07-26 09:17:25.6353 Warn Skipping unknown node: target
2016-07-26 09:17:25.6353 Trace ParseRulesElement
2016-07-26 09:17:25.6623 Error Error in Parsing Configuration File. Exception: NLog.NLogConfigurationException: Exception occurred when loading configuration from D:\Project\NLog.config ---> NLog.NLogConfigurationException: Target log not found.
   w NLog.Config.XmlLoggingConfiguration.ParseLoggerElement(NLogXmlElement loggerElement, IList`1 rulesCollection)
   w NLog.Config.XmlLoggingConfiguration.ParseRulesElement(NLogXmlElement rulesElement, IList`1 rulesCollection)
   w NLog.Config.XmlLoggingConfiguration.ParseNLogElement(NLogXmlElement nlogElement, String filePath, Boolean autoReloadDefault)
   w NLog.Config.XmlLoggingConfiguration.ParseTopLevel(NLogXmlElement content, String filePath, Boolean autoReloadDefault)
   w NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors)

项目结构:

**更新(在Michel A.回答之后):**我在NLog.config文件中也有属性

Build Action = Content
Copy to Output Directory = Copy always

**Update2:**我找到解决方法了,问题是我的反斜杠不是正斜杠

语法错误:

fileName="${basedir}\logs\${date:format=dd}.log"

正确语法:

fileName="${basedir}/logs/${date:format=dd}.log"
tv6aics1

tv6aics11#

Update2:我找到了解决方案。问题是我有反斜杠而不是正斜杠
我很确定这不是问题所在。注册目标时不会评估路径。在Windows上,斜线的类型也不重要。
这里的问题是XML缺少<targets>

<?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" 
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Trace"
      internalLogFile="d:\temp\nlog-internal.log">

  <target xsi:type="File" name="log" fileName="${basedir}\logs\${date:format=dd}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />

  <rules> 
    <logger name="*" minlevel="Debug" writeTo="log" />

  </rules>
</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"
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Trace"
      internalLogFile="d:\temp\nlog-internal.log">

  <targets>
    <target xsi:type="File" name="log" fileName="${basedir}\logs\${date:format=dd}.log"
          layout="${longdate} ${uppercase:${level}} ${message}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Debug" writeTo="log" />

  </rules>
</nlog>

提示:如果安装NLog.Schema package,将获得自动完成和错误检查功能

mklgxw1f

mklgxw1f2#

您的NLog配置文件是否被复制到bin文件夹中?
(在Visual Studio中检查属性文件)

q1qsirdb

q1qsirdb3#

我正在使用.Net Core 3.1,遇到了以下异常:“NLogConfigurationException:找不到日志规则的目标“ownFile-web”:*.",因为我的nlog.config文件没有命名正确。它应该命名为:“Nlog.Config”

相关问题