asp.net core 使用NLog记录日志到txt文件
一、使用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>
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文件,日志格式如下:

六、源码
asp.net core 使用NLog记录日志到txt文件的更多相关文章
- ASP.NET Core使用NLog记录日志到Microsoft Sql Server
在之前的文章中介绍了如何在ASP.NET Core使用NLog,本文为您介绍在ASP.NET Core使用NLog记录到Microsoft Sql Server 1.我们需要添加依赖: NLog.We ...
- ASP.NET Core使用NLog记录日志
1.根目录新建nlog.config配置文件 <?xml version="1.0"?> <nlog xmlns="http://www.nlog-pr ...
- ASP.NET Core 添加NLog日志支持(VS2015update3&VS2017)
1.创建一个新的ASP.NET Core项目 2.添加项目依赖 NLog.Web.AspNetCore 3.在项目目录下添加nlog.config文件: <?xml version=" ...
- asp.net core结合NLog搭建ELK实时日志分析平台
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...
- asp.net core流式上传大文件
asp.net core流式上传大文件 首先需要明确一点就是使用流式上传和使用IFormFile在效率上没有太大的差异,IFormFile的缺点主要是客户端上传过来的文件首先会缓存在服务器内存中,任何 ...
- 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- ASP.NET Core 2.2 附加的数据文件存放在项目文件夹内
在ASP.NET 4.x中(包括ASP.NET MVC 5),可以通过附加数据库文件的方式,将数据库保存在项目的文件中.这种方式对于不同时段需要更换计算机(白天办公室,晚上家里)开发时带来好处. 而. ...
- 15.ASP.NET Core 应用程序中的静态文件中间件
在这篇文章中,我将向大家介绍,如何使用中间件组件来处理静态文件.这篇文章中,我们讨论下面几个问题: 在ASP.NET Core中,我们需要把静态文件存放在哪里? 在ASP.NET Core中 wwwr ...
- 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配置 ...
随机推荐
- python学习记录20181207
1.python中函数指针的用法 直接把函数名赋值给变量,不需要加上()和形参 如: def add(num1,num2): return num1+num2 fun = add 2.打印输出列表需要 ...
- javascript中Math函数的属性与方法
math函数的属性 Math.PI:返回圆周率. math函数的方法 绝对值: Math.abs(); 对数进行上舍入: Math.ceil(); 对数进行下舍入: Math.floor(); Mat ...
- win10安装mysql5.7.20解压版
mysql安装包可到官网下载,地址:https://dev.mysql.com/downloads/mysql 1.首先解压文件包,我这解压到E:\install_work\mysql目录下: 2.发 ...
- Pylon5 SDK搭配OpenCV使用入门
本文假设已经安装了Basler官网提供的Pylon 目前最新的版本是5.0.5,如果上述链接打不开,请直接所有Basler官网下载,需要注意的是在安装Pylon5时要选择Developer模式,这样才 ...
- Linux中常用操作命令(转)
1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切 ...
- java 安装以及配置
1.下载 JDK 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 2.环境变量配 ...
- Nginx服务器中的Socket切分,需要的朋友可以参考下
NGINX发布的1.9.1版本引入了一个新的特性:允许使用SO_REUSEPORT套接字选项,该选项在许多操作系统的新版本中是可用的,包括DragonFly BSD和Linux(内核版本3.9及以后) ...
- java日志规约及配置示例终极总结
目录 什么是日志 常用日志框架 日志级别详解 日志的记录时机 日志使用规约 logback 配置示例 loh4j2 配置示例 什么是日志? 简单的说,日志就是记录程序的运行轨迹,方便查找关键信息,也方 ...
- ExpandableListView
ExpandableListView 1.界面 Item_Group_layout 就一个TextView <?xml version="1.0" encoding=&quo ...
- JS-排序详解-冒泡排序
说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在b的前面,排序后可能会交换 ...