一、使用VisualStudioCode创建一个webapi项目(也可以是mvc等)、一个类库(用于封装记录日志方法,当然如果使用依赖注入到控制台项目,就不需要此类库了)。

二、在类库中添加NLog、NLog.Web.AspNetCore引用(NLog.Web.AspNetCore 是为 ASP.NET Core 添加了对于 NLog 的平台支持),

       webapi项目添加对该类库的引用,这样控制台就无需添加nlog的引用了。

三、在类库中自定义类,简单封装记录日志方法,代码如下:

using System;
using Microsoft.Extensions.Logging;
using NLog; namespace common
{
public class NLogHelper
{
//每创建一个Logger都会有一定的性能损耗,所以定义静态变量
private static Logger nLogger = LogManager.GetCurrentClassLogger(); public static void Info(string msg)
{
nLogger.Info(msg);
} public static void Error(string msg, Exception ex = null)
{
if (ex == null)
nLogger.Error(msg);
else
nLogger.Error(ex,msg);
}
}
}

四、webapi项目配置NLog

1、添加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"
throwConfigExceptions="true"
autoReload="true"> <!--加载ASP.NET Core插件-->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions> <!--输出目的地-->
<targets> <!--输出到文件,记录level为info的日志-->
<target xsi:type="File"
name="info-file"
layout="${longdate}|${uppercase:${level}}|${event-properties:item=EventId.Id}${newline}位置:${callsite:className=True:methodName=True:fileName=True:includeSourcePath=True:skipFrames=1}${newline}${message}${newline}${exception}${newline}"
fileName="c:\logfiles\api\info-${shortdate}.log"
archiveFileName="c:\logfiles\info-${shortdate}.log"
archiveAboveSize="10485760"
archiveNumbering="Rolling"
concurrentWrites="true"
maxArchiveFiles="100000"
keepFileOpen="false"
/> <!--输出到文件,记录level为error的日志-->
<target xsi:type="File"
name="error-file"
layout="${longdate}|${uppercase:${level}}|${event-properties:item=EventId.Id}${newline}位置:${callsite:className=True:methodName=True:fileName=True:includeSourcePath=True:skipFrames=1}${newline}${message}${newline}${exception}${newline}"
fileName="c:\logfiles\api\error-${shortdate}.log"
archiveFileName="c:\logfiles\error-${shortdate}.log"
archiveAboveSize="10485760"
archiveNumbering="Rolling"
concurrentWrites="true"
maxArchiveFiles="100000"
keepFileOpen="false"
/> <!--write to the void aka just remove-->
<target xsi:type="Null" name="blackhole" />
</targets> <!--写入目的地的规则-->
<rules>
<!--记录level为info的日志-->
<!-- 跳过以Microsoft.*开头的日志 -->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" level="Info" writeTo="info-file" /> <!--记录level为error的日志-->
<logger name="*" level="Error" writeTo="error-file" /> </rules>
</nlog>
nlog 节点必须是 xml 文件的根节点,包含三个主要的子节点:extensions、targets、rules。
extensions节点:用来加载nlog扩展工具,这里加载NLog.Web.AspNetCore 是为 ASP.NET Core 添加了对于 NLog 的平台支持。
targets节点:包含输出的日志的一些设置(比如的日志的路径、类型、布局、txt文件的分割等)。
rules节点:将需要日志级别关联到targets里设置的日志。
 
targets节点的子节点描述:
layout表示输出日志到txt的排版格式
fileName表示txt文件名,这里我把日志文件存在在C盘(linux系统,改下路径即可)
maxArchiveFiles表示滚动日志文件上限数
archiveFileName表示滚动日志存放路径,超过单个文件大小,会生成如error-2019-03-30.1.log的文件
archiveAboveSize表示每个日志文件大小的最大值(单位:字节),10485760=10M
 
2、在 Startup.cs的Configure方法配置nlog,如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
} //配置NLog
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//这是为了防止中文乱码
loggerFactory.AddNLog();//添加NLog
env.ConfigureNLog("nlog.config");//读取Nlog配置文件
app.UseHttpsRedirection();
app.UseMvc();
}

五、使用NLog

在webapi的HomeController里代码如下:

[Route("api/Home/[action]")]
[ApiController]
public class HomeController : ControllerBase
{
public ActionResult<IEnumerable<string>> Get()
{
NLogHelper.Info("这是info日志");
NLogHelper.Error("这是error日志",new Exception("测试"));
//这里随便返回一下
return new string[] { "value1", "value2" };
}
}

运行:https://localhost:5001/api/home/get

在C盘生成文件,如下:

打开txt文件,日志格式如下:

六、源码

码云:https://gitee.com/qk2017/CoreNLogDemo

CSDN:https://download.csdn.net/download/coderk2014/11074608

asp.net core 使用NLog记录日志到txt文件的更多相关文章

  1. ASP.NET Core使用NLog记录日志到Microsoft Sql Server

    在之前的文章中介绍了如何在ASP.NET Core使用NLog,本文为您介绍在ASP.NET Core使用NLog记录到Microsoft Sql Server 1.我们需要添加依赖: NLog.We ...

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

    1.根目录新建nlog.config配置文件 <?xml version="1.0"?> <nlog xmlns="http://www.nlog-pr ...

  3. ASP.NET Core 添加NLog日志支持(VS2015update3&VS2017)

    1.创建一个新的ASP.NET Core项目 2.添加项目依赖 NLog.Web.AspNetCore 3.在项目目录下添加nlog.config文件: <?xml version=" ...

  4. asp.net core结合NLog搭建ELK实时日志分析平台

    0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...

  5. asp.net core流式上传大文件

    asp.net core流式上传大文件 首先需要明确一点就是使用流式上传和使用IFormFile在效率上没有太大的差异,IFormFile的缺点主要是客户端上传过来的文件首先会缓存在服务器内存中,任何 ...

  6. 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. ASP.NET Core 2.2 附加的数据文件存放在项目文件夹内

    在ASP.NET 4.x中(包括ASP.NET MVC 5),可以通过附加数据库文件的方式,将数据库保存在项目的文件中.这种方式对于不同时段需要更换计算机(白天办公室,晚上家里)开发时带来好处. 而. ...

  8. 15.ASP.NET Core 应用程序中的静态文件中间件

    在这篇文章中,我将向大家介绍,如何使用中间件组件来处理静态文件.这篇文章中,我们讨论下面几个问题: 在ASP.NET Core中,我们需要把静态文件存放在哪里? 在ASP.NET Core中 wwwr ...

  9. ASP.NET Core之NLog使用

    1.新建ASP.NET Core项目 1.1选择项目 1.2选择.Net版本 2. 添加NLog插件 2.1 通过Nuget安装 2.2下载相关的插件 3.修改NLog配置文件 3.1添加NLog配置 ...

随机推荐

  1. Pyqt walk 在Windows查找文件

    在任意目录下查找需要的文件如何操作呢? 其实很简单, WIN+E [桌面计算机]- 右上角“搜索 计算机” 这个就是Windows自带的文件搜索功能.自己做一个文件搜索的应该应该也挺好玩的. 知识要点 ...

  2. Spark安装部署| 运行模式

    Spark 一种基于内存的快速.通用.可扩展的大数据分析引擎: 内置模块: Spark Core(封装了rdd.任务调度.内存管理.错误恢复.与存储系统交互): Spark SQL(处理结构化数据). ...

  3. Yarn集群的搭建、Yarn的架构和WordCount程序在集群提交方式

    一.Yarn集群概述及搭建 1.Mapreduce程序运行在多台机器的集群上,而且在运行是要使用很多maptask和reducertask,这个过程中需要一个自动化任务调度平台来调度任务,分配资源,这 ...

  4. React实现局部刷新

    [项目结构] 流程: 入口文件 -> 路由 -> layout -> Analysi/Monitor/Workspace 1.入口文件 -> src/index.js 2.组件 ...

  5. Vue H5 项目模板

    使用了 mint-ui sass vue fastclick vue router 一个项目的初始化状态,一个新项目,陆陆续续花了2天时间搭起来的. 里面有mint-ui的基本用法 tabbar 还有 ...

  6. 【spring】-- 手写一个最简单的IOC框架

    1.什么是springIOC IOC就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理. 如果我们手写一个最最简单的IOC,最终效果是怎样呢? xml配置: <b ...

  7. django——模板层

    每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了,模板层就是 ...

  8. Hibernate根据实体类自动创建表

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<propert ...

  9. MVC 程序在编译时提示 GAC与 Temporary ASP.NET Files目录内引用文件版本不一致

    今天在调试Mvc程序时,提示GAC与Temporary ASP.NET Files目录内引用文件版本不一致. [A]System.Web.WebPages.Razor.Configuration.Ho ...

  10. __x__(6)0905第二天__标签属性=“值”

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...