本文转自:http://www.cnblogs.com/CCHUncle/p/5207735.html
配置文件
NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置。
配置文件位置
启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束查询):
- 应用程序的标准配置文件(通常为applicationname.exe.config)
- 应用程序所在目录中的applicationname.exe.nlog文件
- 应用程序所在目录中的NLog.config文件
- NLog.dll所在目录中的NLog.dll.nlog文件
- 环境变量NLOG_GLOBAL_CONFIG_FILE所指向的文件
对于ASP.NET应用程序,NLog将自动按照顺序搜索下列路径:
- Web应用程序的标准配置文件——web.config
- web.config所在目录中的web.nlog文件
- 应用程序所在目录中的NLog.config文件
- NLog.dll所在目录中的NLog.dll.nlog文件
- 环境变量NLOG_GLOBAL_CONFIG_FILE所指向的文件
.NET Compact Framework并不支持应用程序配置文件(*.exe.config)以及环境变量,因此NLog将自动按照顺序搜索下列路径:
- 应用程序所在目录中的applicationname.exe.nlog文件
- 应用程序所在目录中的NLog.config文件
- NLog.dll所在目录中的NLog.dll.nlog文件
配置文件形式
NLog支持两种形式的配置文件:
- 嵌入到*.exe.config或web.config等标准配置文件中
- 单独的配置文件NLog.config
对于第一种形式,我们使用了标准化的configSection机制。这样配置文件将类似如下所示:
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog>
</nlog>
</configuration>
在配置文件的<nlog />根元素中,我们可以指定如下的子元素。其中前两个是必须设定的,其余三个为可选设定。
- <targets /> :定义日志的输出目标
- <rules /> :定义对日志信息进行路由的规则
- <extensions /> :定义从其他dll文件中加载的NLog扩展模块
- <include /> : 引入外部的配置文件
- <variable /> : 定义配置文件中用到的变量
例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--***configSections节点必须位于顶部-->
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<nlog 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="file.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
</configuration>
代码中配置
NLog也可以通过编程配置,代码如下:
using NLog;
using NLog.Config;
using NLog.Targets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NLogConsoleDemo
{
/// <summary>
/// 测试在代码中配置NLog
/// </summary>
class Program
{
static void Main(string[] args)
{
// Step 1. Create configuration object
var config = new LoggingConfiguration();
// Step 2. Create targets and add them to the configuration
var consoleTarget = new ColoredConsoleTarget();
config.AddTarget("console", consoleTarget);
var fileTarget = new FileTarget();
config.AddTarget("file", fileTarget);
// Step 3. Set target properties
consoleTarget.Layout = @"${date:format=HH\:mm\:ss} ${logger} ${message}";
fileTarget.FileName = "${basedir}/file.txt";
fileTarget.Layout = "${message}";
// Step 4. Define rules
var rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget);
config.LoggingRules.Add(rule1);
var rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget);
config.LoggingRules.Add(rule2);
// Step 5. Activate the configuration
LogManager.Configuration = config;
// Example usage
Logger logger = LogManager.GetLogger("Program");
logger.Trace("trace log message");
logger.Debug("debug log message");
logger.Info("info log message");
logger.Warn("warn log message");
logger.Error("error log message");
logger.Fatal("fatal log message");
Console.ReadLine();
}
}
}