博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Core 2.0 使用NLog实现日志记录
阅读量:6848 次
发布时间:2019-06-26

本文共 5600 字,大约阅读时间需要 18 分钟。

1、安装NuGet包

运行:Install-Package NLog.Web.AspNetCore

运行:Install-Package NLog

在csproj中编辑:

<PackageReference Include="NLog" Version="4.5.3" />

<PackageReference Include="NLog.Web.AspNetCore" Version="4.5.3" />

2、创建一个nlog.config文件。

View Code

布局渲染器是在中使用的模板宏,例如${message}${level}等等

NLog支持创建自定义布局渲染器。有关更多信息,请参阅:

 

NLog软件包 $ {activityid} - 将一个System.Diagnostics跟踪关联ID放入日志中。$ {all-event-properties} - 记录所有事件上下文数据。$ {appdomain} - 当前的应用程序域。$ {assembly-version} - 默认应用程序域中可执行文件的版本。$ {basedir} - 当前应用程序域的基本目录。$ {callsite} - 呼叫站点(类名称,方法名称和源信息)。$ {callsite-linenumber} - 呼叫站点源行号。$ {counter} - 一个计数器值(每个布局渲染都会增加)。$ {currentdir} - 应用程序的当前工作目录。$ {date} - 当前日期和时间。$ {document-uri} - 托管当前Silverlight应用程序的HTML页面的URI。$ {environment} - 环境变量。$ {
event-properties} - 记录事件属性数据 - 重命名$ {
event-context}。$ {exception} - 通过调用其中一个Logger * Exception()方法提供的异常信息。$ {file-contents} - 渲染指定文件的内容。$ {gc} - 关于垃圾收集器的信息。$ {gdc} - 全局诊断上下文项目。字典结构来保存每个应用程序实例值。$ {guid} - 全局唯一标识符(GUID)。$ {identity} - 线程标识信息(名称和认证信息)。$ {install-context} - 安装参数(传递给InstallNLogConfig)。$ {level} - 日志级别。$ {literal} - 一个字符串文字。$ {log4jxmlevent} - 与log4j,Chainsaw和NLogViewer兼容的XML事件描述。$ {logger} - 记录器名称。$ {longdate} - 日期和时间格式很长,可排序yyyy-MM-dd HH:mm:ss.ffff。$ {machinename} - 进程正在运行的机器名称。$ {mdc} - 映射的诊断上下文 - 一个线程局部结构。$ {mdlc} - 异步映射的诊断上下文 - 一个线程局部结构。$ {message} - 格式化的日志消息。$ {ndc} - 嵌套的诊断上下文 - 一个线程局部结构。$ {ndlc} - 异步嵌套诊断上下文 - 一个线程局部结构。$ {newline} - 换行符。$ {nlogdir} - NLog.dll所在的目录。$ {performancecounter} - 性能计数器。$ {processid} - 当前进程的标识符。$ {processinfo} - 关于正在运行的进程的信息。$ {processname} - 当前进程的名称。$ {processtime} - 格式为HH:mm:ss.mmm的处理时间。$ {qpc} - 高精度计时器,基于从QueryPerformanceCounter()返回的值(可选地转换为秒)。$ {registry} - 来自注册表的值。$ {sequenceid} - 日志序列标识$ {shortdate} - 可排序格式的短日期yyyy-MM-dd。$ {sl-appinfo} - 有关Silverlight应用程序的信息。$ {specialfolder} - 系统特殊文件夹路径(包括我的文档,我的音乐,程序文件,桌面等)。$ {stacktrace} - 堆栈跟踪渲染器。$ {tempdir} - 一个临时目录。$ {threadid} - 当前线程的标识符。$ {threadname} - 当前线程的名称。$ {ticks} - 当前日期和时间的Ticks值。$ {time} - 以24小时可排序格式HH:mm:ss.mmm的时间。$ {
var} - 渲染变量(4.1中新增)$ {windows-identity} - 线程Windows身份信息(用户名)。包装$ {cached} - 将缓存应用于另一个布局输出。$ {filesystem-normalize} - 通过用安全字符替换文件名中不允许的字符。$ {json-encode} - 使用JSON规则转义另一个布局的输出。$ {lowercase} - 将另一个布局输出的结果转换为小写。$ {onexception} - 仅在为日志消息定义异常时才输出内部布局。$ {pad} - 将填充应用于另一个布局输出。$ {replace} - 用另一个字符串替换另一个布局输出中的字符串。$ {replace-newlines} - 用另一个字符串替换换行符。$ {rot13} - 用ROT-13解码“encrypted”文本。$ {trim-whitespace} - 修剪另一个布局渲染器的结果中的空白。$ {uppercase} - 将另一个布局输出的结果转换为大写。$ {url-encode} - 编码另一个布局输出的结果以用于URL。$ {when} - 只有在满足指定条件时才输出内部布局。$ {whenEmpty} - 当内部布局产生空结果时输出替代布局。$ {WrapLine} - 在指定的行长度处包装另一个布局输出的结果。$ {xml-encode} - 将另一个布局输出的结果转换为XML兼容。NLog.Extended软件包 $ {appsetting} - 应用程序配置设置。NLog.Web包 $ {aspnet-MVC-Action} - ASP.NET MVC动作名称$ {aspnet-MVC-Controller} - ASP.NET MVC控制器名称$ {aspnet-Application} - ASP.NET应用程序变量。$ {aspnet-Item} - ASP.NET HttpContext项目变量。$ {aspnet-TraceIdentifier} - ASP.NET跟踪标识符$ {aspnet-Request} - ASP.NET请求变量。$ {aspnet-Request-Cookie} - ASP.NET请求cookie内容。$ {aspnet-Request-Host} - ASP.NET请求主机。$ {aspnet-Request-Method} - ASP.NET请求方法(GET,POST等)。$ {aspnet-Request-IP} - 客户端IP。$ {aspnet-Request-QueryString} - ASP.NET请求查询字符串。$ {aspnet-Request-Referrer} - ASP.NET请求引用者。$ {aspnet-Request-UserAgent} - ASP.NET请求useragent。$ {aspnet-Request-Url} - ASP.NET请求URL。$ {aspnet-Session} - ASP.NET Session变量。$ {aspnet-SessionId} - ASP.NET会话ID变量。$ {aspnet-User-isAuthenticated} - ASP.NET用户身份验证?$ {aspnet-User-AuthType} - ASP.NET用户身份验证。$ {aspnet-User-Identity} - ASP.NET用户变量。$ {iis-site-name} - IIS站点名称。外包装外部软件包,不由NLog团队维护。$ {xml} - 转换为XML格式$ {gelf} - 将日志转换为GELF格式。
View Code

将自定义值传递给布局

即使布局渲染器提供了许多预定义的值,但您可能需要将特定于应用程序的值传递给。您可以通过向事件添加自定义属性来在代码中传递自己的值。然后使用渲染器检索值。

3、在csproj手动编辑文件并添加

4、更新program.cs

public static void Main(string[] args)        {            // NLog:首先设置记录器以捕获所有错误            var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();            try            {                logger.Debug("init main");                BuildWebHost(args).Run();            }            catch (Exception exception)            {                // NLog:catch安装错误                 logger.Error(exception, "Stopped program because of exception");                throw;            }            finally            {                //确保在退出应用程序之前刷新并停止内部定时器/线程(避免Linux上的分段错误)                NLog.LogManager.Shutdown();            }        }        public static IWebHost BuildWebHost(string[] args) =>        WebHost.CreateDefaultBuilder(args)                .UseStartup
() .ConfigureLogging(logging => { logging.ClearProviders(); logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); }) .UseNLog() // NLog:setup NLog用于依赖注入 .Build();
View Code

5、配置appsettings.json

{  "Logging": {    "IncludeScopes": false,    "LogLevel": {      "Default": "Warning",      "Microsoft": "Information"    }  }}
View Code

6、写日志

private readonly ILogger _logger;        public HomeController(ILogger
logger) { _logger = logger; _logger.LogDebug(1, "NLog injected into HomeController"); } public IActionResult Index() { _logger.LogInformation("Hello, this is the index!"); return View(); }
View Code

7、输出示例

 

 

转载于:https://www.cnblogs.com/lwc1st/p/8979942.html

你可能感兴趣的文章
dell台式机双SATA硬盘开机提示NO boot device available- Strike F1 to retryboot .F2
查看>>
linux下mysql的卸载、安装全过程
查看>>
samba不需密碼的分享
查看>>
利用putty进行vnc + ssh tunneling登录
查看>>
js重定向---实现页面跳转的几种方式
查看>>
hadoop1.x作业提交过程分析(源码分析第二篇)
查看>>
默认安装vsftpd后
查看>>
极速理解设计模式系列:14.轻量级模式(Flyweight Pattern)
查看>>
深度有趣 | 12 一起来动动手
查看>>
相关算法排序安排
查看>>
css的bug:
查看>>
《Redis设计与实现》读书笔记
查看>>
waiting for changelog lock.
查看>>
小白学爬虫-批量部署Splash负载集群
查看>>
你离BAT之间,只差这一套Java面试题
查看>>
laravel package 推荐,数据备份
查看>>
Synchronized锁在Spring事务管理下,为啥还线程不安全?
查看>>
环境变量PATH cp命令 mv命令 文档查看cat/more/less/head/tail
查看>>
阿里云亮相2019联通合作伙伴大会,边缘计算等3款云产品助力5G时代产业数字化转型...
查看>>
dubbo源码分析-服务端发布流程-笔记
查看>>