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配置 ...
随机推荐
- vue 父子之间通信及非父子之间通信
直接看图说话 vue Bus总线 import Vue from 'vue';import VueBus from 'vue-bus';Vue.use(VueBus); 这是子组件要发到父组件的写法 ...
- 别再用"while (!feof(file))"来逐行读取txt文件了!
起因 执行一个C/C++程序出现segment fault.它逐行读取文本文件,每一行是一个图片名字,然后读图.处理图像,etc. 发现最后一次读取的文件名不存在(空的). 正确的逐行读取txt文件 ...
- Android人脸检测1(静态图片)
搭建Android人脸识别环境花了很长时间(可以查看之前的文章),解决Android开发中的杂七杂八小问题也耗时不少. 今天记录一下,点击选择照片或者拍照上传照片进行人脸检测的小demo. (andr ...
- Redis数据结构之sds基本操作函数
本文及后续文章,Redis版本均是v3.2.8 本篇文章讲解sds基本操作函数,我们从源码角度来进一步理解. 一.sds创建函数和销毁 sds创建函数 /* Create a new sds stri ...
- php接入支付宝的流程(转载)
php接入支付宝的流程写在这里供像我一样的小白参考. 1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约) 2.下载SDK&Dome(网址https://doc. ...
- JAVA基础复习与总结<一> 对象与类的概念_内部类_继承与多态
一.对象与类 类:类是一个模版,它描述了一类对象的行为和状态. class animal { private int color; private int size; public void eat ...
- Android项目中的config.xml文件 “config.xml”
Android应用程序需要保存一些配置时,可以将这些配置项放置到values/config.xml文件中. 实例分析: <?xml version="1.0" encodin ...
- Ubuntu12.04 LTS 32位 安装ns-2.35
ubuntu12.04lts 32-bit默认采用gcc 4.6和g++4.6,而ns的最新版本ns 2.3.5也采用了相同到版本,所以这方面不会有版本不同到问题 收回上面这句话..../valida ...
- Java for Android 学习第一周
前言 专业Java程序员所必需掌握的3个主题: 1. Java编程语言 2. 使用Java的面向对象编程(OOP) 3. Java核心库 JDK.JRE和JVM 1. javac编译java源代码为字 ...
- JavaFTP文件传输上传和下载文件
首先在电脑上创建一个ftp服务器,具体步骤自行百度. 接下来开始写有用的java连接TFP站点和传输文件的代码. 1.首先jar用的是apache 的工具包 请自行下载 . 2.俩个文件代码 一个Ft ...