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. 键值观察 KVO

    http://www.cnblogs.com/dyf520/p/3805297.html Key-Value Observing Programming Guide 1,注册Key-Value Obs ...

  2. (五)SpringBoot如何定义全局异常

    一:添加业务类异常 创建ServiceException package com.example.demo.core.ret; import java.io.Serializable; /** * @ ...

  3. sql mysql和sqlserver存在就更新,不存在就插入的写法(转)

    转自:http://hi.baidu.com/tidy0608/item/ff930fe2436f2601560f1dd9 sqlsever数据存在就更新,不存在就插入的两种方法 两种经常使用的方法: ...

  4. 洛谷 P1199 三国游戏

    参考:Solution_ID:17 题解 更新时间: 2016-11-13 21:01 这道题要求最后得到的两方的默契值最大的武将,小涵的默契值大于计算机,首先,我们这个解法获胜的思路是,每个武将对应 ...

  5. java基本数据类型在栈中怎么存放的?

    参考地址:https://www.zhihu.com/question/24747160 问:int a = 3; 首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟 ...

  6. git部分指令

    git stash #会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录 git stach pop #恢复之前缓存的工作目录 切换分支: git checkout de ...

  7. php使用json_decode返回NULL

    php5.2以后自带json_decode函数,但是对json文本串的格式要求非常严格. 很可能使用该函数得到的返回值是NULL 可以使用使用json_last_error()函数获取到的返回值来帮助 ...

  8. re正则表达式公式讲解1

    常用的表达式一些规则 1.“.”  匹配出了\n之外的任意一个字符,包括特殊字符 有几个·就匹配几个字符. import re print(re.search("."," ...

  9. hdu4003/蓝桥杯 金属采集

    思路: 树形dp + 分组背包dp. 参考https://www.cnblogs.com/kuangbin/archive/2012/08/29/2661928.html 实现: #include & ...

  10. position 位置、表单

    一.position    位置 1.只要使用了定位,必须有一个相对的参照物 2.具体定位的那个元素需加position:absolute:(绝对的)   绝对的:就是具体到某一个地方,特别详细的意思 ...