从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之四Nlog记录日志至数据库
为什么要进行日志记录呢?为什么要存至数据库呢?只能说日志记录是每个系统都应当有的。
好的日志记录方式可以提供我们足够多定位问题的依据。查找系统或软件或项目的错误或异常记录。程序在运行时就像一个机器人,我们可以从所记录的日志看出它正在做什么,是不是按预期的设计在做,用来判断运行状态是否是正常的。
日志中包括主机名、时间、日志级别、日志消息、异常明细、异常类型。
NetCore在包含 Startup 的项目上使用Nuget包管理工具添加 NLog.Web.AspNetCore 依赖,然后添加 NLog.config 配置文件
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target xsi:type="Database" name="database"
connectionString="Data Source=.;Initial Catalog=LogServer;User ID=sa;Password=123456;"
commandText="insert into TestLog
([LogTime], [LogLevel], [Message],
[Host],[ExpType],[MethodName],[ExDetail])
values (@LogTime,@LogLevel, @Message,
@Host,@ExpType,@MethodName,@ExDetail)
;">
<parameter name="@Host" layout="${machinename}" />
<parameter name="@LogTime" layout="${longdate}"/><!--日志发生时间-->
<parameter name="@LogLevel" layout="${level}"/><!--日志等级-->
<parameter name="@Message" layout="${message}"/><!--日志信息-->
<parameter name="@MethodName" layout="${callsite:methodName=true}" />
<parameter name="@ExpType" layout="${exception:format=type}" />
<parameter name="@ExDetail" layout="${exception:format=tostring}" />
</target> </targets> <rules>
<logger name="*" level="Fatal" writeTo="database"/>
<logger name="*" level="Warn" writeTo="database"/>
<logger name="*" level="Debug" writeTo="database"/>
<logger name="*" level="Error" writeTo="database"/>
<logger name="*" level="Info" writeTo="database"/>
<logger name="*" level="Trace" writeTo="database"/>
</rules>
</nlog>
当中的 LogServer 是数据库名,TestLog 是表名。
然后再去数据库创建相对应的库与表,建表语句:
CREATE TABLE TestLog(
[Id] [bigint] IDENTITY(,) NOT NULL,
[Host] [varchar]() NULL,
[LogTime] [varchar]() NULL,
[LogLevel] [varchar]() NULL,
[Message] [varchar](max) NULL,
[MethodName] [varchar]() NULL,
[ExpType] [varchar]() NULL,
[ExDetail] [varchar](max) NULL,
CONSTRAINT [PK_TestLog] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
然后在 Startup 的 构造函数中更改如下:在构造函数中添加 IHostingEnvironment env
然后 env.ConfigureNLog("NLog.config");
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
env.ConfigureNLog("NLog.config");
Configuration = configuration;
}
然后在要添加 LogHelper 类的项目上使用Nuget包管理工具添加 NLog 依赖LogHelper 代码如下:
/// <summary>
/// 日志记录类;
/// 严重级别从小到大:Trace、Debug、Info、Warn、Error、Fatal
/// </summary>
public class LogHelper
{
/// <summary>
/// NLog的实例对象
/// </summary>
public static NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); }
在项目自带的 ValuesController 中添加一个测试写日志的方法
[HttpGet]
[Route("log")]
public ActionResult TestLog()
{
LogHelper.Logger.Trace("测试日志");
LogHelper.Logger.Debug("测试日志");
LogHelper.Logger.Info("测试日志");
LogHelper.Logger.Warn("测试日志");
LogHelper.Logger.Error("测试日志");
LogHelper.Logger.Fatal("测试日志");
return Succeed();
}
然后启动项目,访问刚刚那个接口地址,就可以看到日志表中已经添加进去这几个日志了。
到这里也就完成了日志记录到数据的操作了。
在下一篇中将介绍如何使用过滤器来进行全局异常处理,处理那些未处理的异常或自定义抛出的异常。
有需要源码的可通过此 GitHub链接拉取 觉得还可以的给个 start 哦,谢谢!
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之四Nlog记录日志至数据库的更多相关文章
- 从零开始搭建前后端分离的NetCore(EF Core CodeFirst+Au)+Vue的项目框架之二autofac解耦
在 上一篇 中将项目的基本骨架搭起来能正常跑通,这一篇将讲到,如何通过autofac将DbContext和model进行解耦,只用添加model,而不用在DbContext中添加DbSet. 在这里就 ...
- 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境
前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- 【手摸手,带你搭建前后端分离商城系统】01 搭建基本代码框架、生成一个基本API
[手摸手,带你搭建前后端分离商城系统]01 搭建基本代码框架.生成一个基本API 通过本教程的学习,将带你从零搭建一个商城系统. 当然,这个商城涵盖了很多流行的知识点和技术核心 我可以学习到什么? S ...
- 【手摸手,带你搭建前后端分离商城系统】02 VUE-CLI 脚手架生成基本项目,axios配置请求、解决跨域问题
[手摸手,带你搭建前后端分离商城系统]02 VUE-CLI 脚手架生成基本项目,axios配置请求.解决跨域问题. 回顾一下上一节我们学习到的内容.已经将一个 usm_admin 后台用户 表的基本增 ...
- 【手摸手,带你搭建前后端分离商城系统】03 整合Spring Security token 实现方案,完成主业务登录
[手摸手,带你搭建前后端分离商城系统]03 整合Spring Security token 实现方案,完成主业务登录 上节里面,我们已经将基本的前端 VUE + Element UI 整合到了一起.并 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║Vue基础:JS面向对象&字面量& this字
缘起 书接上文<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史>,昨天咱们说到了以我的经历说明的web开发经历的 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十六 ║Vue基础:ES6初体验 & 模块化编程
缘起 昨天说到了<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║ Vue前篇:JS对象&字面量&this>,通过总体来看,好像大家对这一块不是很 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十三║Vue实战:Vuex 其实很简单
前言 哈喽大家周五好,马上又是一个周末了,下周就是中秋了,下下周就是国庆啦,这里先祝福大家一个比一个假日嗨皮啦~~转眼我们的专题已经写了第 23 篇了,好几次都坚持不下去想要中断,不过每当看到群里的交 ...
随机推荐
- Node.js实现简易的获取access_token
还是老样子,在自学node.js的道路上走得坑坑洼洼,按住了躁动的自己,调整好心情 ,ready........Go....! 首先在项目里新建config.json,其中 appid 与 appsc ...
- Java 将PDF 转为Word、图片、SVG、XPS、Html、PDF/A
本文将介绍通过Java编程来实现PDF文档转换的方法.包括: 1. PDF转为Word 2. PDF转为图片 3. PDF转为Html 4. PDF转为SVG 4.1 将PDF每一页转为单个的SVG ...
- c语言的strcpy函数
strcpy是用于复制字符串的函数 上面这个程序输出的结果为 为什么输出字符串%s时s是abABC,而输出字符%c时s是abABCg呢 因为strcpy函数本身的性质:复制字符串直到’\0’结束符为止 ...
- 使用c++开发跨平台的程序
使用c++开发跨平台的程序 背景 在开发过程中,使用c++作为开发语言,通常被认为是痛苦的,啰嗦的,超长开发时间的.最近几年有各种各样的语言被广泛使用,相对比来说c++不是那么出彩.c++虽然年龄大, ...
- linux初学者-文件管理篇
linux初学者-文件管理篇 linux系统的所有东西都是以文件的形式存储在计算机中的,所以linux系统中对文件的管理非常重要.以下介绍一些文件管理的常用方法. 1.文件的建立 文件的建立或者修改文 ...
- .Net微信网页开发之使用微信JS-SDK调用微信扫一扫功能
前言: 之前有个项目需要调用微信扫描二维码的功能,通过调用微信扫码二维码功能,然后去获取到系统中生成的二维码信息.正好微信JS-SDK提供了调用微信扫一扫的功能接口,下面让我们来看看是如何实现的吧. ...
- Linux系统管理----目录与文件管理作业习题
chapter02 - 03 作业 1. 分别用cat \tac\nl三个命令查看文件/etc/ssh/sshd_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? cat ...
- Drools规则引擎-如果判断某个对象中的集合是否包含指定的值
规则引擎集合相关处理 在实际生产过程中,有很多关于集合的处理场景,比如一个Fact对象中包含有一个集合,而需要判断该集合是否包含某个值.而Drools规则引擎也提供了多种处理方式,比如通过from.c ...
- java+springBoot+Thymeleaf+vue分页组件的定义
导读 本篇着重介绍java开发环境下,如何写一个vue分页组件,使用到的技术点有java.springBoot.Thymeleaf等: 分页效果图 名称为vuepagerbasic的分页组件,只包含上 ...
- 总结Idea环境,吐血踩过的坑
1)首先是JDK环境安装,这一步千万要出错,我就是配错了CLASSPATH导致了很诡异的问题.可能结果:就是RUN到tomcat不报错,但是有404错误. 2)然后是IDEA安装,这里要十分注意如果你 ...