C#NLog
时间: 2025-05-23 14:21:32 浏览: 33
### C# 中 NLog 库的使用指南
#### 1. 安装 NLog
为了在项目中使用 NLog,首先需要通过 NuGet 包管理器安装 `NLog` 和其扩展包(如果需要)。可以通过以下命令完成安装:
```bash
Install-Package NLog
```
对于更高级的功能,比如数据库日志记录或者电子邮件通知等功能,则可以考虑安装额外的目标支持包,例如 `NLog.Web.AspNetCore`。
#### 2. 创建并配置 NLog.config 文件
创建一个名为 `NLog.config` 的 XML 文件,并将其放置于项目的根目录下。确保该文件被设置为随应用程序一起复制到输出目录中。以下是基本的配置示例[^3]:
```xml
<?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">
<!-- 可选:定义变量 -->
<variable name="myvar" value="myvalue"/>
<!-- 设置默认的日志级别 -->
<targets>
<!-- 控制台目标 -->
<target xsi:type="Console" name="consoleTarget" layout="${longdate} ${logger} ${message}" />
<!-- 文件目标 -->
<target xsi:type="File" name="fileTarget" fileName="logfile.txt" layout="${longdate} ${level} ${message}" />
</targets>
<rules>
<!-- 输出至控制台 -->
<logger name="*" minlevel="Trace" writeTo="consoleTarget" />
<!-- 同时写入文件 -->
<logger name="*" minlevel="Debug" writeTo="fileTarget" />
</rules>
</nlog>
```
此配置会将所有的日志消息发送到控制台以及指定的文本文件中。
#### 3. 初始化和使用 Logger 对象
一旦完成了上述步骤,在程序代码里就可以轻松地获取 `Logger` 实例来记录各种类型的事件信息了。下面展示了一个完整的例子[^2]:
```csharp
using NLog;
class Program {
// 获取当前类对应的 Logger 实例
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args) {
// 记录一条 Info 类型的消息
logger.Info("Application started.");
try {
int result = 10 / 0;
} catch (DivideByZeroException e) {
// 当发生异常时,捕获错误并将堆栈跟踪信息记录下来
logger.Error(e, "Division by zero attempted.");
}
// 关闭应用前清理资源
LogManager.Shutdown();
}
}
```
这段代码展示了如何初始化 `Logger` 并利用它来进行不同级别的日志记录操作,包括但不限于调试 (`Debug`)、警告 (`Warn`)、严重错误报告(`Error`)等。
#### 4. 动态加载配置
除了静态方式外,还可以动态加载外部配置文件。这允许开发者无需重新编译即可调整运行期的行为模式[^3]。实现如下所示:
```csharp
// 加载自定义路径下的 nlog 配置文件
string configFilePath = AppDomain.CurrentDomain.BaseDirectory + "/Custom.NLog.config";
if (!System.IO.File.Exists(configFilePath)) {
throw new FileNotFoundException($"Missing custom configuration file at path: {configFilePath}");
}
LogManager.Configuration = new XmlLoggingConfiguration(configFilePath);
```
以上片段说明了当标准位置找不到预期配置时的一种处理办法。
---
### 常见问题排查
有时可能会遇到某些情况下无法正常工作的问题,这里列举几个常见原因及其解决方法[^4]:
- **未找到配置文件**: 如果报错提示类似于 `Common.Logging.Simple.NoOpLogger`, 很可能是因为缺少必要的 NLog 配置文件。
- **日志等级不匹配**: 若发现即使设置了日志语句却看不到任何输出,请确认所设阈值是否低于实际使用的日志类别(如 Trace< Debug < Info...)。
---
阅读全文
相关推荐


















