# 配置文件概述
## 配置文件智能提示
+ 方法一:引入Nuget包:NLog.config 和 NLog.Schema
+ 方法二:下载NLog.xsd文件,并配置
> 下载提示文件 https://nlog-project.org/schemas/NLog.xsd 并放入项目根目录
> 编辑nlog.config文件,在nlog根节点中添加属性: xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
## 配置文件位置
### 自动匹配
在程序启动时,NLog会在各种文件中搜索其配置(如下所述)。它加载找到的第一个nlog配置文件:按下述默认位置,依次查找nlog配置,找到第一个,搜索结束,使用配置;全部位置搜索完,仍然找不到配置,则NLog失败。
对于独立的* .exe应用程序,文件搜索如下:
+ 标准应用程序配置文件(通常为applicationname.exe.config)
+ 应用程序目录中的applicationname.exe.nlog
+ 应用程序目录中的NLog.config(名称敏感;使用docker dotnet core)
+ NLog.dll所在目录中的NLog.dll.nlog(仅当GAC中未安装NLog时)
对于ASP.NET应用程序,文件搜索如下:
+ 标准Web应用程序文件web.config
+ web.nlog与web.config位于同一目录
+ 应用程序目录中的NLog.config
+ NLog.dll所在目录中的NLog.dll.nlog(仅当GAC中未安装NLog时)
### 显式(手动)指定匹配
+ 加载配置文件:指定Nlog.config文件
```csharp
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration("nlog.config");
```
+ 加载配置文件:从指定字符串
```csharp
var xmlStream = new System.IO.StringReader("*****");
var xmlReader = System.Xml.XmlReader.Create(xmlStream);
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(xmlReader, null);
```
+ 加载配置文件: Xamarin 资源文件
+ 加载配置文件: Xamarin Android, 自动扫描 assets文件夹中的 NLog.config
```csharp
LogManager.Configuration = new XmlLoggingConfiguration("assets/someothername.config");
```
## 配置文件布局
NLog配置的格式为XML,并且可以嵌入Visual Studio项目配置文件(app.config或web.config)中,也可以是独立的XML文件。
+ 嵌入到项目配置文件中
```xml
...
...
```
+ 独立XML文件: **NLog.config**
```xml
...
```
## 顶级元素
nlog配置有以下顶级元素,其中targets和rules在任何配置中都是必需的;其他为可选项,在高级方案中很有用。
+ targets :定义日志目标/输出
+ rules :定义日志路由规则
+ extensions :从* .dll文件加载NLog扩展程序集
+ include :包括外部配置文件
+ variable :设置配置变量
最简单的配置:一个target 和 一个rule