Asp.Net Core NLog 将日志输出到数据库以及添加LayoutRenderer的支持
在这之前打算用Apache的Log4Net,但是发现其AdoNetAppender方法已经不存在了,无法使用配置文件直接输出到数据库了,因此我便改用了NLog框架。
一、对项目添加NLog
通过Nuget安装NLog NLog.Extensions.Logging、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"
autoReload="true"
internalLogLevel="Trace"
internalLogFile="internal-nlog.txt">
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="${var:configDir}\nlog-all.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}"/> <target xsi:type="File" name="ownFile-web" fileName="${var:configDir}\nlog-own.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}| ${message} ${exception} " />
<target xsi:type="Null" name="blackhole" />
<target name="database" xsi:type="Database">
<connectionString>${var:connectionString}</connectionString>
<commandText>
INSERT INTO [dbo].[System_SqlLog]
([SqlLogId]
,[CreateUserId]
,[CreateUserCode]
,[CreateUserName]
,[CreateTime]
,[OperateSql]
,[EndDateTime]
,[ElapsedTime]
,[Parameter])
VALUES
(@SqlLogId
,@CreateUserId
,@CreateUserCode
,@CreateUserName
,@CreateTime
,@OperateSql
,@EndDateTime
,@ElapsedTime
,@Parameter);
</commandText>
<parameter name="@SqlLogId" layout="${event-context:item=SqlLogId}"/>
<parameter name="@CreateUserId" layout="${event-context:item=CreateUserId}" />
<parameter name="@CreateUserCode" layout="${event-context:item=CreateUserCode}"/>
<parameter name="@CreateUserName" layout="${event-context:item=CreateUserName}"/>
<parameter name="@CreateTime" layout="${event-context:item=CreateTime}"/>
<parameter name="@OperateSql" layout="${event-context:item=OperateSql}" />
<parameter name="@EndDateTime" layout="${event-context:item=EndDateTime}" />
<parameter name="@ElapsedTime" layout="${event-context:item=ElapsedTime}" />
<parameter name="@Parameter" layout="${event-context:item=Parameter}" />
</target>
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="SqlLogToDatabase" minlevel="Debug" writeTo="database" />
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules> </nlog>
- Nlog节点如果设置 InternalLogLevel,internalLogFile 可以查看NLog输出日志时的内部信息,并且可以再里面检查配置文件错误等。
- database target内可以指定connectionString,Sql语句,Sql参数等
三、添加NLog到 .Net Core中


四、执行
public virtual void WriteLog() {
Logger iLog = LogManager.GetCurrentClassLogger();
if (iLog.IsInfoEnabled) {
LogEventInfo ei = new LogEventInfo(NLog.LogLevel.Info, "", "");
ei.Properties["SqlLogId"] = CombUtil.NewComb();
iLog.Info(ei);
}
}
五、LayoutRenderer的应用




- <targets/>定义日志的目标/输出
- type - 目标的类型 - 比如“File”,“Database”,“Mail”。如果你使用了名字空间,这个属性会被命名为 xsi:type.
- <rules /> - 定义日志的路由规则
- <extensions /> - 从*.dll加载NLog扩展
- <include /> - 导入外部配置文件
- <variable /> - 为配置变量赋值
Asp.Net Core NLog 将日志输出到数据库以及添加LayoutRenderer的支持的更多相关文章
- asp.net core NLog将日志写到文件
1.安装Nlog包 Install-Package NLog.Extensions.Logging -Pre 2.在项目添加nlog.config文件 2.1.nlog.config <?xml ...
- .NET Core+NLog+存储配置 日志存入到数据库
nlog-config.xml 配置文件: <?xml version="1.0" encoding="utf-8" ?> <nlog xml ...
- ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件
应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET ...
- 第七节:Asp.Net Core内置日志和整合NLog(未完)
一. Asp.Net Core内置日志 1. 默认支持三种输出方式:控制台.调试(底部输出窗口).EventSource,当然也可以在Program类中通过logging.ClearProviders ...
- 玩转ASP.NET Core中的日志组件
简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...
- asp.net core 系列 13 日志
一.概述 ASP.NET Core 支持适用于各种内置和第三方日志记录, 供程序的日志记录 API,本文介绍了如何将日志记录 API 与内置提供程序一起使用.对于第三方日志记录提供程序使用,文章最后有 ...
- ASP.NET Core 中的日志记录
目录 内置日志的使用 使用Nlog 集成ELK 参考 内置日志的使用 Logger 是 asp .net core 的内置 service,所以我们就不需要在ConfigureService里面注册了 ...
- (14)ASP.NET Core 中的日志记录
1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API.本文介绍了如何将日志记录API与内置提供应用程序一起使用. 2.添加日志提供程序 日志记录提供应用程序 ...
- ASP.NET Core 异常处理与日志记录
1. ASP.NET Core 异常处理与日志记录 1.1. 异常处理 1.1.1. 异常产生的原因及处理 1.1.2. ASP.NET Core中启动开发人员异常页面 1.2. 日志记录 1.2.1 ...
随机推荐
- PS 滤镜——运动模糊
%%%%% motion blur clc; clear all; close all; Image=imread('4.jpg'); Image=double(Image); theta=pi/4 ...
- ZYThumbnailTableView类似于小型阅读器
Demo github地址: https://github.com/liuzhiyi1992/ZYThumbnailTableView 原文地址:http://zyden.vicp.cc/zythu ...
- LeetCode之旅(13)-Valid Anagram
题目介绍: Given two strings s and t, write a function to determine if t is an anagram of s. For example, ...
- Android 应用内直接跳转酷市场
不确定酷市场后期是否还会该包名或者路径,目前的7.9 版本测试通过. private void gotoCoolapkMarket() { try { Intent intent = new Inte ...
- JVM学习--(六)类加载器原理
我们知道我们编写的java代码,会经过编译器编译成字节码文件(class文件),再把字节码文件装载到JVM中,映射到各个内存区域中,我们的程序就可以在内存中运行了.那么字节码文件是怎样装载到JVM中的 ...
- webservice入门简介
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 webservice入门简介 1.什么是webservice? webservice是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓的远 ...
- access窗口标签居中
Private Sub Form_Resize() On Error Resume Next Me.Width = Me.InsideWidth Me.Section(acDetail).Height ...
- element.dispatchEvent is not a function的解决
Firebug中的出错提示: element.dispatchEvent is not a function element.dispatchEvent(event); prototype.js (第 ...
- 微信小程序中自定义函数的学习使用
新手,最近在给学校搞个党费计算器.需要自己定义函数来实现某个功能. 1.无参函数: 函数都是写在js文件里面的. Page({ data:{ income1:'0', }, cal:function( ...
- es6(二):解构赋值
ES中允许按照一定格式从数组,对象值提取值,对变量进行赋值,这就是解构(Destructuring) let [a,b,c]=[1,10,100] console.log(a,b,c)//1 10 1 ...
