发布:2023/6/4 20:55:51作者:管理员 来源:本站 浏览次数:591
文章目录
前言
一、特征
二、目标
三、支持
四、入门
1.添加引用
2.创建配置文件
3.启用复制到bin文件夹
4.更新program.cs
5.配置appsettings.json
6.写日志
7.输出示例
前言
NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台。NLog使写入多个目标变得容易 。(数据库,文件,控制台)并即时更改日志记录配置。
NLog支持结构化 和传统日志记录。
NLog的重点是:高性能,易于使用,易于扩展和灵活配置。
一、特征
易于配置:
通过配置文件 和以编程方式,NLog都非常易于配置。即使不重新启动应用程序,也可以更改配置。
可模板化:
每个日志消息都可以使用各种布局渲染进行模板化
可扩展的:
即使NLog具有目标和预定义的布局,您也可以编写自定义目标或传递自定义值
结构化日志:
全面支持结构化日志记录
二、目标
目标用于显示,存储日志消息或将日志消息传递到另一个目标。NLog可以为每个日志消息动态写入多个目标之一。
现成提供了30多个目标,其中包括:
事件记录日志
写入事件日志本地或远程
数据库
将日志存储在.NET支持的 数据库中
控制台
实时写入命令行控制台,包括消息的 颜色编码
电子邮件
每当出现应用程序错误时, 您都可以发送电子邮件
ASP.NET核心记录
将日志消息写入ASP.NET Core日志记录
还有一些包装器目标,它们提供 缓冲, 负载平衡, 故障转移情况, 异步写入和更多方案。目标的完整列表在配置选项页面上。如果找不到适合您需求的目标,则可以 轻松编写自定义目标。
三、支持
NLog支持以下平台:
.NET Framework 3.5、4、4.5-4.8
.NET Framework 4客户端配置文件
Xamarin Android
Xamarin iOs
Windows Phone 8
Silverlight 4和5
单声道4
ASP.NET 4(NLog.Web程序包)
ASP.NET Core(NLog.Web.AspNetCore程序包)
.NET Core(NLog.Extensions.Logging程序包)
.NET Standard 1.x-NLog 4.5
.NET Standard 2.x-NLog 4.5
UWP-NLog 4.5
四、入门
示例使用.net 5 MVC 演示文本日志记录方式
1.添加引用
版本请酌情晒下使用
2.创建配置文件
在项目的根目录中创建nlog.config(全部小写)文件。
<configuration>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\internal-nlog.txt">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
<target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
<target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="allfile" />
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
</configuration>
3.启用复制到bin文件夹
为nlog.config启用复制到bin文件夹
或.csproj手动编辑文件并添加:
<ItemGroup>
<Content Update="nlog.config" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
4.更新program.cs
public class Program
{
public static void Main(string[] args)
{
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
logger.Debug("init main");
CreateHostBuilder(args).Build().Run();
}
catch (Exception exception)
{
//NLog: catch setup errors
logger.Error(exception, "Stopped program because of exception");
throw;
}
finally
{
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
NLog.LogManager.Shutdown();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog(); // NLog: Setup NLog for Dependency injection;
}
5.配置appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Trace",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
6.写日志
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
_logger.LogDebug(1, "NLog injected into HomeController");
}
public IActionResult Index()
{
_logger.LogInformation("Hello, this is the index!");
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
7.输出示例
启动ASP.NET Core网站时,我们得到两个文件:
2021-09-25 17:47:42.9103||DEBUG|TestNLog.Program|init main
2021-09-25 17:47:44.1057||INFO|Microsoft.Hosting.Lifetime|Application started. Press Ctrl+C to shut down.
2021-09-25 17:47:44.1193||INFO|Microsoft.Hosting.Lifetime|Hosting environment: Development
2021-09-25 17:47:44.1240||INFO|Microsoft.Hosting.Lifetime|Content root path: D:\test\TestNLog
2021-09-25 17:47:44.1850||INFO|TestNLog.Controllers.HomeController|Hello, this is the index!
2021-09-25 17:47:42.9103||DEBUG|TestNLog.Program|init main |url: |action:
2021-09-25 17:47:44.1850||INFO|TestNLog.Controllers.HomeController|Hello, this is the index! |url: http://localhost/|action: Index
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4