c# - 在 API REST .NET 中从 NLog 读取 NLog.config

标签 c# asp.net .net asp.net-mvc-4 nlog

当我从我的 ASP.NET MVC4 项目调用它时,我从我的类库项目读取配置文件 (NLog.config) 时遇到问题。

我使用单元测试项目测试了我的代码,并正确读取了配置文件,并在我在 NLog.config 上指定的文件上进行了正确的日志记录,因此正确定义了 NLog.config。

我还在 Copy to Output Directory 设置中设置了“Copy always”,就像教程所说的那样。

问题是,当我从我的 ASP 项目调用类库项目时,我意识到它没有生成任何类型的日志,当我调试时,我看到它没有从 NLog 中选择配置。配置,因此,我的项目不知道何时何地记录。

当我查看“ASP 项目文件夹”/bin 时,有来自 NLog 的文件:NLog.dll、NLog.config 和 NLog.xml,因此理论上 ASP 项目可以毫无问题地访问 NLog 文件.

我阅读了 NLog 的教程,但我无法找到解决方案。只是无法理解为什么我的测试项目可以正常工作,但是当我从我的 ASP 项目进行相同的调用时却无法正常工作。

这是我的 NLog 配置文件。

<?xml version="1.0" encoding="utf-8" ?>
<nlog throwExceptions="true" 
  xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<targets>
  <target name="logfile" xsi:type="File" fileName="C:\logfile.txt" layout="${callsite:fileName=true} - ${longdate} - ${level:uppercase=true} - ${logger} - ${message}"/>
</targets>

<rules>
  <logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>

在我的类(class)中,我以这种方式创建记录器:

private static Logger logger = LogManager.GetCurrentClassLogger();

谁能帮我解决这个问题?

最佳答案

我找到了解决方案。

似乎复制到输出目录设置,对于 asp.net-mvc4 是不够的。

Copy to output directory

我必须手动将 NLog.config 复制到解决方案资源管理器中的 asp 项目本身。

Project explorer http://imageshack.us/a/img849/2460/sol1o.png

在这个例子中,我将 NLog.config 从 LoggingLibrary 复制到 LogWebApp 项目中,它运行良好。

您好!

关于c# - 在 API REST .NET 中从 NLog 读取 NLog.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469474/

相关文章:

c# - 将 GridView 导出到 excel #2

c# - 为什么 'Any CPU' 应用程序在 x64 机器上以 x86 运行?

c# - C# 中的蓝牙,哪个堆栈,哪个 SDK?

asp.net - 使用 jQuery 使用数据库中的值设置背景颜色

c# - 如何对无限等待的监听器进行单元测试?

c# - 从子控件访问父控件 - ASP.NET C#

c# - Visual Studio 2017 控制台未显示但正在运行

.net - 使用 MSBuild 命令行指定发布版本作为项目的程序集版本

c# - .NET Core 3.1 和无法加载文件或程序集 System.Data.Entity,版本 = 4.0.0.0

c# - 具有非唯一条目的两个列表之间的差异