D-06-日志写入 ? NLog ? ILogger

日志的写入

相信很多人会在程序内埋log以便问题的追查,尤其是线上的问题不能像开发时期可以设定中断点来debug,而且很多问题都是特殊操作方式才会造成的问题,因此日志的写入是一件很重要的事情。所以今天跟大家介绍如何写入日志。

本文同步放置於此

NLog

「大头前辈,我遇到一个问题,但是我没办法透过设定中断点来debug耶,有没有甚麽方法可以debug。」
一大早小光因为昨晚在开发时遇到问题,所以一大早就跟大头请教如何处理问题的方法。这时大头因为手上专案都处理得差不多所以心情很好。
「那你有写Log吗,可以看看你Log的内容看有没有帮助。」
这时小光想一下,所以这样跟大头说。
「我有写耶,不过当程序结束後就看不到了,可是我又不能不把它关掉。」
大头似乎有点纳闷地看着小光,後来想到他的疑问点是甚麽了。
「难道...你用Console.WriteLine在写log。」
这时小光点点头,大头听到这答案差点没昏倒,不过大头很镇定的跟他说。
「来吧,我们来学学NLog。」

环境设定

一如往昔的我们先来加载相依的套件,所以首先先输入以下的指令。

dotnet add package NLog.Web.AspNetCore
dotnet add package NLog.Config

接下来我们开始处理专案所需的程序码。

注册NLog

在加载相依套件後要再Program.CreateHostBuilder加入以下内容。

.UseNLog();

没错就是这麽简单,接下来看写日志的地方该怎麽写。

写Log

当认识了DI之後写日志就方便多了,因为连日志都是由注入的方式,而且使用的是Microsoft.Extensions.Logging.AbstractionsILogger,所以也没有直接相依NLog所以使用方式如下所示。

public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
    _logger = logger;
}

所以接下来要写log时就透过_logger使用下列指令来写即可。

  • LogError
  • LogCritical
  • LogDebug
  • LogInformation
  • LogTrace
  • LogWarning

如此就可以写入日志了,这里还有一个要注意的地方,这些方法还有个多载可以传Exception进去,如果有Exception可以使用该方法,最後可以参考NLog Config来设定日志的样式。

後记

今天主要是介绍如何透过NLog把日志写到log档内,相信对各位线上的问题盘查有很大的帮助。


<<:  Day24 Let's ODOO: Discuss

>>:  【Day24】人力资源篇-Time Off

华南X99-F8 opencore引导安装黑苹果MacOS big sur

配置信息: CPU:E5 2680 V3 主板:华南 X99-F8 内存:SK 16G x2 显卡:...

Swift 新手-iPhone 界面设计(二)

拇指法则 “拇指法则”是资深交互设计大神Steven Hoober在2013年对1300名手机用户的...

Day13-seaborn(1)长条图barplot、countplot

seaborn资料视觉化的强大套件 能有效率的配合pandas快速地让我们检视资料 我会跟Day11...

DAY28 欸你Git来一下

自从国高中我的房间出现了电脑,虽然是很废的文书机,但它还是在夜深人静的凌晨抚慰我睡不着的心情。方形的...

【Day 30】Google Apps Script - 延伸篇 -系列回顾与学习资源整理

Google Apps Script 网站又改版了,Google 一直在发展这个平台,还会愈来愈好...