Asp.net core中,自带的Log是在当selfhost运行时,在控制台中输出,不便于查阅,如果用一个log架框,把日志持久化,便于查询.

  NLog是一个免费的日志记录框架,专门为.net平台下的框架提供日志功能,本文主要说明asp.net core下怎么使用NLog。

  首先用Nuget安装NLog.Extensions.Logging和NLog.Web.AspNetCore两个类库。

  修改project.json,在publishOptions中添加”nlog.config节点”

  "publishOptions": {

  "include": [

  "wwwroot",

  "**/*.cshtml",

  "appsettings.json",

  "web.config",

  "nlog.config"

  ]

  }

  在StartUp.cs中添加

  public void ConfigureServices(IServiceCollection services)

  {

  // Add framework services.

  services.AddMvc();

  //为NLog.web注入HttpContextAccessor

  services.AddSingleton();

  ……

  }

  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

  {

  //添加NLog到.net core框架中

  loggerFactory.AddNLog();

  //添加NLog的中间件

  app.AddNLogWeb();

  //指定NLog的配置文件

  env.ConfigureNLog("nlog.config");

  ……

  }

  HomeController.cs中是自定义日志

  static Logger Logger = LogManager.GetCurrentClassLogger();

  public IActionResult Index()

  {

  Logger.Info("普通信息日志");

  Logger.Debug("调试日志");

  Logger.Error("错误日志");

  Logger.Fatal("异常日志");

  Logger.Warn("警告日志");

  Logger.Trace("跟踪日志");

  Logger.Log(NLog.LogLevel.Warn, "Log日志");

  try

  {

  int i = 0;

  var a = 10 / i;

  }

  catch (Exception exc)

  {

  //异常日志

  Logger.Fatal(exc, exc.Message);

  }

  return View();

  }

  NLog.config,有两种日志,记录在C:\temp下,一种是全部日志,一种是自己通过NLog函数记录的日志。如果日志库异常,会产生在c:\temp\internal-nlog.txt下,

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  autoReload="true"

  internalLogLevel="Warn"

  internalLogFile="c:\temp\internal-nlog.txt">

  layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />

  layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}| ${message} ${exception}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />

  Layout中$后的数据就是要写日志的内容,可以根据自己的需要,选择要保存的日志数据.

  如果想把日志保存到数据库中,可以把NLog.config修改如下:

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  autoReload="true"

  internalLogLevel="Warn"

  internalLogFile="c:\temp\internal-nlog.txt">

  INSERT INTO [dbo].[NLog] (

  [MachineName],

  [SiteName],

  [Logged],

  [Level],无锡好的男科医院 http://www.zzchnk.com/

  [UserName],

  [Message],

  [Logger],

  [Properties],

  [Host],

  [Controller],

  [Action],

  [Url],

  [CallSite],

  [Exception]

  ) VALUES (

  @machineName,

  @siteName,

  @logged,

  @level,

  @userName,

  @message,

  @logger,

  @properties,

  @host,

  @controller,

  @action,

  @url,

  @callSite,

  @exception

  );

NLog在asp.net core中的应用的更多相关文章

  1. Asp.Net Core中使用NLog记录日志

    2019/10/28, Asp.Net Core 3.0, NLog 4.6.7, NLog.Web.AspNetCore 4.9.0 摘要:NLog在asp.net网站中的使用,NLog日志写入数据 ...

  2. ASP.NET Core:ASP.NET Core中使用NLog记录日志

    一.前言 在所有的应用程序中,日志功能是不可或缺的模块,我们可以根据日志信息进行调试.查看产生的错误信息,在ASP.NET Core中我们可以使用log4net或者NLog日志组件来实现记录日志的功能 ...

  3. 使用 NLog 给 Asp.Net Core 做请求监控

    为了减少由于单个请求挂掉而拖垮整站的情况发生,给所有请求做统计是一个不错的解决方法,通过观察哪些请求的耗时比较长,我们就可以找到对应的接口.代码.数据表,做有针对性的优化可以提高效率.在 asp.ne ...

  4. 玩转ASP.NET Core中的日志组件

    简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...

  5. Asp.Net Core中利用Seq组件展示结构化日志功能

    在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看 ...

  6. ASP.NET Core中,UseDeveloperExceptionPage扩展方法会吃掉异常

    在ASP.NET Core中Startup类的Configure方法中,有一个扩展方法叫UseDeveloperExceptionPage,如下所示: // This method gets call ...

  7. ASP.NET Core 中的日志记录

    目录 内置日志的使用 使用Nlog 集成ELK 参考 内置日志的使用 Logger 是 asp .net core 的内置 service,所以我们就不需要在ConfigureService里面注册了 ...

  8. (14)ASP.NET Core 中的日志记录

    1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API.本文介绍了如何将日志记录API与内置提供应用程序一起使用. 2.添加日志提供程序 日志记录提供应用程序 ...

  9. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

随机推荐

  1. redis主从集群搭建

    一.安装redis 首先登陆官网下载压缩包,我安装的是最新版本5.X,下载地址http://download.redis.io/releases/redis-5.0.2.tar.gz. 进入文件所在目 ...

  2. IO流案例:1.复制多级文件夹 2.删除多级文件夹

    package copy; /* 需求:复制多级文件夹 复制d:\\itcast(包含文件和子文件夹)到模块目录下 分析: d:\\itcast a.txt b.txt javaweb a.xml b ...

  3. 125 Valid Palindrome 验证回文字符串

    给定一个字符串,确定它是否是回文,只考虑字母数字字符和忽略大小写.例如:"A man, a plan, a canal: Panama" 是回文字符串."race a c ...

  4. D. Tavas and Malekas DFS模拟 + kmp + hash || kmp + hash

    http://codeforces.com/contest/535/problem/D 如果真的要把m个串覆盖上一个串上面,是可以得,不会超时. 要注意到一点,全部覆盖后再判断时候合法,和边放边判断, ...

  5. AJPFX实现兔子问题

    有一对小兔子,从第三个月长成开始每个月生一对小兔子,新出生的小兔子从第三个月长成开始每个月也生一对小兔子,假设所有的兔子都不会死,问每个月兔子的总数?(月数可以是6,12).大神看看我笨方法谢的对吗? ...

  6. Java GUI简介

    Java有2个GUI库:AWT.Swing. AWT是SUN最早提供的GUI库,依赖本地平台,界面不好看,功能有限.之后推出了Swing,Swing并没有完全替代AWT,而是建立在AWT基础上的.Sw ...

  7. 洛谷P2764 最小路径覆盖问题(二分图)

    题意 给出一张有向无环图,求出用最少的路径覆盖整张图,要求路径在定点处不相交 输出方案 Sol 定理:路径覆盖 = 定点数 - 二分图最大匹配数 直接上匈牙利 输出方案的话就不断的从一个点跳匹配边 # ...

  8. obj.style 和currentstyle 等区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. 获取样式  obj.style   和currentstyle  等区别   obj.style只能获得内嵌样式(inline Style)就是写 ...

  9. PMP项目管理学习笔记(9)——范围管理

    关于范围管理的几个名词定义 产品范围:表示你和你的团队正在构建的产品或服务的特性和功能:产品范围与最终产品有关,包括产品的特性,组件和组成部分.人们谈论确定产品的范围时,大多都是在谈论确定产品的特性, ...

  10. resharper10 注册方法

    注册工具:http://pan.baidu.com/s/1bnFjGfX 注册方法: 1 编辑Products.json文件,留下自己要注册的产品路径即可. 2 运行patch.exe 3 使用Ser ...