.NET 黑魔法 - asp.net core 日志系统
asp.net core 里如何记录日志呢?
这要从asp.net core的依赖注入说起,在asp.net core里的依赖注入真是无所不在,各种面向切面的接口与事件。
好吧,来点干货。
首先,我们希望有这样一种调用方式(或者说asp.net core集成的日志功能只能用这种方式):

在asp.net core里,框架内的很多功能都是依赖注入,不需要new XXX(),只需要在对象的构造函数里注入就好啦。 上图的ILogger<LogController> logger,就是asp.net core日志功能的接口。
this.logger.LogInformation("这里是日志信息的消息"); 就是记录一个信息日志,通常跟业务相关。 this.logger.LogError(e, e.StackTrace, new string[] { "附加参数1", "附加参数2" });就是记录一个异常日志。
当然,还有其他级别的方法,比如.LogDebug(),.LogWarning() 等等。
到此,如何使用日志功能已经讲完了,下来我们看看怎么配置它。

注意途中Startup方法和Configure方法,这里我们用了NLog,那么NLog是什么呢?
其实他是asp.net core ILogger接口的实现,我要通过接口注入,又没有实例化的代码,所以实例化的工作只能交由别人来做了,各位有兴趣可以实现一套自己的日志系统。
最后,别忘了把名为nlog.config的配置文件放在项目根目录,它决定了我们日志系统的行为,比如模板等等:

关于NLog更多的介绍我们以后再讲,会介绍它的日志级别,日志模板等。
.NET 黑魔法 - asp.net core 日志系统的更多相关文章
- 理解ASP.NET Core - 日志(Logging)
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 快速上手 添加日志提供程序 在文章主机(Host)中,讲到Host.CreateDefault ...
- asp.net core 日志
日志输出是应用程序必不可少的部分,log4net,nlog这些成熟的组件在之前的项目中被广泛使用,在asp.net core的项目中没有找到与之对应的log4net版本,nlog对core提供了很好的 ...
- ASP.NET Core 入门教程 10、ASP.NET Core 日志记录(NLog)入门
一.前言 1.本教程主要内容 ASP.NET Core + 内置日志组件记录控制台日志 ASP.NET Core + NLog 按天记录本地日志 ASP.NET Core + NLog 将日志按自定义 ...
- 自定义ASP.NET Core日志中间件
这个日志框架使用的是ASP.NET Core的NLog,用来记录每次请求信息和返回信息. 1.首先创建一个Web应用项目,我选择的是MVC模板: 2.使用NuGet添加Microsoft.Extens ...
- 总结:利用asp.net core日志进行生产环境下的错误排查(asp.net core version 2.2,用IIS做服务器)
概述 调试asp.net core程序时,在输出窗口中,在输出来源选择“调试”或“xxx-ASP.NET Core Web服务器”时,可以看到类似“info:Microsoft.AspNetCore. ...
- asp.net core后台系统登录的快速构建
登录流程图 示例预览 构建步骤 当然,你也可以直接之前前往coding仓库查看源码,要是发现bug记得提醒我啊~ LoginDemo地址 1. 首先你得有一个项目 2. 然后你需要一个登录页面 完整L ...
- asp.net core 日志记录到elk
关于ELK的安装大家可以参考ubuntu18 docker中部署ELK 和 caas/docker-elk , 首先需要在ELK中创建一个index patterns 首先我们创建一个aspnet ...
- .NET 黑魔法 - asp.net core 身份认证 - Policy
身份认证几乎是每个项目都要集成的功能,在面向接口(Microservice)的系统中,我们需要有跨平台,多终端支持等特性的认证机制,基于token的认证方式无疑是最好的方案.今天我们就来介绍下在.Ne ...
- asp.net core日志组件
日志介绍 Logging的使用 1. appsettings.json中Logging的介绍 Logging的配置信息是保存在appsettings.json配置文件中的.因为之前介绍配置文件的时候我 ...
随机推荐
- ASP.NET MVC 系统过滤器、自定义过滤器
一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration:缓存的时间,以秒为 ...
- 网关 整理 fastcgi wsgi
https://www.cnblogs.com/hzhtracy/p/4365938.html 网关协议学习:CGI.FastCGI.WSGI.uWSGI 一直对这四者的概念和区别很模糊,现在就特 ...
- coreseek搜索
参考文档地址:http://github.tiankonguse.com/doc/sphinx/
- Chap6:风险与监督[《区块链中文词典》维京&甲子]
- 完美解决failed to open stream: HTTP request failed!(file_get_contents引起的)
当使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP reque ...
- LeetCode 977 Squares of a Sorted Array 解题报告
题目要求 Given an array of integers A sorted in non-decreasing order, return an array of the squares of ...
- ReactDom.render调用后没有渲染
可能发生问题的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Java如何编写Servlet程序
一:Servlet Servlet是Java服务器端编程,不同于一般的Java应用程序,Servlet程序是运行在服务器上的,服务器有很多种,Tomcat只是其中一种. 例子: 在Eclipse中新建 ...
- RequireJs的理解
什么是RequireJs RequireJS 是一个JavaScript模块加载器. 在ES6出现之前,JS不像其他语言同样拥有“模块”这一概念,于是为了支持JS模块化,出现了各种各样的语言工具,如w ...
- Mybatis批量insert 返回主键值和foreach标签详解
Mybatis批量insert 返回主键 Mybatis从3.3.1版本开始,支持批量插入后返回主键ID.首先对于支持自增主键的数据库使用useGenerateKeys和keyProperty,对于不 ...