ASP.NET Core使用NLog记录日志到Microsoft Sql Server
在之前的文章中介绍了如何在ASP.NET Core使用NLog,本文为您介绍在ASP.NET Core使用NLog记录到Microsoft Sql Server
我们需要添加依赖:
添加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="Warn"
- internalLogFile="logfiles/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.Log (
- Application, Logged, Level, Message,
- Logger, Callsite, Exception
- ) values (
- @Application, @Logged, @Level, @Message,
- @Logger, @Callsite, @Exception
- );
- </commandText>
- <parameter name="@application" layout="AspNetCoreNlog" />
- <parameter name="@logged" layout="${date}" />
- <parameter name="@level" layout="${level}" />
- <parameter name="@message" layout="${message}" />
- <parameter name="@logger" layout="${logger}" />
- <parameter name="@callSite" layout="${callsite}" />
- <parameter name="@exception" layout="${exception:tostring}" />
- </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="*" minlevel="Trace" writeTo="database" />
- <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
- </rules>
- </nlog>
将nlog.config复制到输出目录
设置数据库(我使用的是ef code first方式创建数据表)
- using System;
- namespace Apps.Models
- {
- public class ApplicationLog
- {
- public int Id { get; set; }
- public string Application { get; set; }
- public DateTime Logged { get; set; }
- public string Level { get; set; }
- public string Message { get; set; }
- public string Logger { get; set; }
- public string Callsite { get; set; }
- public string Exception { get; set; }
- }
- }
- protected override void OnModelCreating(ModelBuilder builder)
- {
- builder.Entity<ApplicationLog>(m =>
- {
- m.ToTable("Log");
- m.HasKey(c => c.Id);
- m.Property(c => c.Application).IsRequired().HasMaxLength();
- m.Property(c => c.Level).IsRequired().HasMaxLength();
- m.Property(c => c.Message).IsRequired();
- m.Property(c => c.Logger).HasMaxLength();
- });
- }
在startup.cs文件中添加:
- using NLog.Extensions.Logging;
- using NLog.Web;
- public Startup(IHostingEnvironment env)
- {
- env.ConfigureNLog("nlog.config");
- }
- // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
- {
- loggerFactory.AddNLog();
- app.AddNLogWeb();
- LogManager.Configuration.Variables["connectionString"] = Configuration.GetConnectionString("DefaultConnection");
- LogManager.Configuration.Variables["configDir"] = Configuration.GetSection("LogFilesDir").Value;
- }
appsettings.json
- "ConnectionStrings": {
- "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=logdb;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
- },
- "LogFilesDir": "c:\\temp\\nlog\\logfiles"
然后就可以记录日志了
- public class HomeController :Controller {
- private readonly ILogger _logger;
- public HomeController(ILoggerFactory loggerFactory) {
- _logger = loggerFactory.CreateLogger<HomeController>();
- }
- public IActionResult Index() {
- _logger.LogInformation("你访问了首页");
- _logger.LogWarning("警告信息");
- _logger.LogError("错误信息");
- return View();
- }
- }
ASP.NET Core使用NLog记录日志到Microsoft Sql Server的更多相关文章
- asp.net core 使用NLog记录日志到txt文件
一.使用VisualStudioCode创建一个webapi项目(也可以是mvc等).一个类库(用于封装记录日志方法,当然如果使用依赖注入到控制台项目,就不需要此类库了). 二.在类库中添加NLog. ...
- ASP.NET Core使用NLog记录日志
1.根目录新建nlog.config配置文件 <?xml version="1.0"?> <nlog xmlns="http://www.nlog-pr ...
- ASP .Net Core 在 CentOS8 ARM 下连接 SQL Server 2008 R2(Hypervisor)
本文主要记录在 ARM 系统下无法连接SQL Server 2008 R2 的解决过程. 解决方案是使用 ODBC 的方式连接数据库,进行操作. 手上有公司的华为鲲鹏云计算 ARM 架构的 CentO ...
- asp.net core结合NLog搭建ELK实时日志分析平台
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...
- [.Net Core] - 使用 NLog 记录日志到 Sql Server
1. 使用 Nuget 安装 NLog. 2. 在 Sql Server 中创建 NLog 数据表. CREATE TABLE [dbo].[NLogInfo]( ,) NOT NULL, [Date ...
- Cenots7下安装运行.NET Core、MicroSoft SQL Server 2019 preview 的基础实践
一:概要 适应人群:.Net初学者.想了解.Net Core在Linux系统中的运行环境搭建者.初次且想在linux上应用.Net Core开发应用程序者: 基础技能:了解.NET基础开发技能者.有一 ...
- asp.net编译中出现 数据库 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test1.mdf' 已存在。请选择其他数据库名称。
关于asp.net编译中出现数据库 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test1.mdf ...
- Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3
最近重新查看微软MvcMusicStore-v3.0的源代码,发现忽略了很多重要的东西,特别是数据访问那一部分. 首先Microsoft SQL Server Compact 4.0 详细的介绍和下载 ...
- 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...
随机推荐
- Win10和Ubuntu双系统搭建详
最近学习云计算时,需要搭建xen和Hadoop,虚拟机容易出很多问题所以搭建了双系统,也方便以后的学习. 下面是详细搭建过程: 准备材料: U盘(容量>8G,最好是3.0接口速度快).Ultra ...
- linux 怎么与网络对时
首先来了解下面几个知识点:1. date命令:#date显示系统时间2.hwclock命令 (即hardwareclock系统硬件时间)#hwclock显示硬件时间#hwclock -w将系统时间写入 ...
- 网络通信中tcp多客户端连接
网络编程中的tcp实例太多了,自己也写了好几次(羞愧),今天在想一对一的TCP知道怎么写了,可是一对多的怎么办呢?服务器是如何知道要给那个发送数据呢?做开发的同学应该经常听说uid这个属性.可以为什么 ...
- swagger支持中英文
内存中使用一种数据结构存储着大量的信息,其中原始的描述信息(各种属性的描述,种类很多),中英文都包含,格式为:"english//中文".需求:描述description需要动态变 ...
- 艾奇学院:66个信息流广告和SEM学习网址资源大放送!
01.CNZZ-UDplus 网址:udplus.umeng.com 说明:基于用户行为的精细化分析.运营平台,去研究研究,很多料! 02.黑眼圈管理后台 网址:www.not3.com 说明:二类电 ...
- 71.纯 CSS 创作一个跳 8 字型舞的 loader
原文地址:https://segmentfault.com/a/1190000015534639#articleHeader0 感想:rotateX() 和rotateZ()一起使用好懵呀. HTML ...
- js自执行事件
let a = document.createElement("a");let event = new MouseEvent("click");a.downlo ...
- Mybatis pageHelper.startPage(...)是物理分页
使用PageHelper.startPage(...)进行物理分页 业务需求只显示其中的100条数据 之前是在业务逻辑里对参数limit进行了处理 后来试试sql的limit查询100条数据 但是不确 ...
- 1024程序员节宅男节日快乐 -- JAVA快速开发平台,JEECG 3.8宅男优化版本发布
JEECG 3.8 版本发布,系统全面升级,重构上传组件.优化代码生成器机制! 导读 ⊙平台性能优化,系统更稳定,速度闪电般提升 ⊙系统上传组件全面重构,使用plupload组件,解决flash的 ...
- Day07 - Ruby比一比:Symbol符号与String字串
前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...