.net core NLog将日志写到txt文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

昨天试水了下asp.net core 项目的创建,很顺利的就把项目跑起来了,但发现日志只显示在了控制台上,没有动态的创建日志文件,更不要说向日志文件中写入日志信息了,造成以后正式环境的生产和问题排查难度很大,于是决定写一篇日志集成文章,方便后期正式库集成


默认日志效果如下图
在这里插入图片描述

一、如何集成后台日志?

Nlog选用: NLog.Extensions.Logging

二、使用步骤

1.引入库

在这里插入图片描述

代码如下(示例):

Install-Package NLog.Extensions.Logging -Pre

2.创建一个nlog.config文件

在这里插入图片描述

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="internal-nlog.txt">

  <!-- define various log targets -->
  <targets>
    <!-- write logs to file -->
    <target xsi:type="File" name="allfile" fileName="Loggers/${shortdate}.log"
                 layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />


    <target xsi:type="File" name="ownFile-web" fileName="Loggers/${shortdate}.log"
             layout="${longdate}|${logger}|${uppercase:${level}}|  ${message} ${exception}" />

    <target xsi:type="Null" name="blackhole" />
  </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="ownFile-web" />
  </rules>
</nlog>

3.创建一个project.json文件

在这里插入图片描述
project.json文件内容如下(示例):

{
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config",
      "Config/nlog.config" //加上nlog配置文件
    ]
  }
}

4.创建一个Startup文件

在这里插入图片描述
Startup代码内容如下(示例):

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactor)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            //加载Nlog的nlog.config配置文件
            LogManager.LoadConfiguration("Config/nlog.config");
            //添加NLog
            loggerFactor.AddNLog();
            app.UseRouting();
        
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
           
        }

注意:ConfigureExtensions.AddNLog(ILoggerFactory)”已过时:“Instead use ILoggingBuilder.AddNLog() or IHostBuilder.UseNLog(),发现这个方法过时了,但现在不影响使用,我们跑一下程序看看效果了
在这里插入图片描述

5.运行效果

在这里插入图片描述


总结

安装NLog.Extensions.Logging nuget 包,修改和创建一些相关文件,成功集成了日志并写入进后台文件,但在.net core 3.1 ,方法提示已经过时:ConfigureExtensions.AddNLog(ILoggerFactory)”已过时:“Instead use ILoggingBuilder.AddNLog() or IHostBuilder.UseNLog(),稍后会出一篇文章进行解决。

除了这种方式,你还可以集成更加强大的开源的日志框架,如:

  1. Exceptionless - .Net Core开源日志框架
  2. Exceptionless官网:https://exceptionless.com/
  3. 说明文档:https://github.com/exceptionless/Exceptionless/wiki/
  4. Github:https://github.com/exceptionless/Exceptionless/
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值