C#快速配置NLog日志使用

在这里插入图片描述
首先我们需要在Nuget中安装Nlog和Nlog-Schema。
添加配置文件: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"xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"autoReload="true"throwExceptions="false"internalLogLevel="Off"internalLogFile="d:\nlog\nlog-internal.log"><!-- optional, add some variableshttps://github.com/nlog/NLog/wiki/Configuration-file#variables--><!--<variable name="myvar" value="myvalue"/>--><variable name="logDir" value="${basedir}/nlog"/><variable name="logFileName" value="${date:format=yyyyMMdd}.txt"/><variable name="logArchiveFileName" value="${date:format=yyyyMMdd}_{#}.txt"/><variable name="logLayout" value="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} [${level}] ${message}"/><!--See https://github.com/nlog/nlog/wiki/Configuration-filefor information on customizing logging rules and outputs.--><targets><!--add your targets hereSee https://github.com/nlog/NLog/wiki/Targets for possible targets.See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.--><!--Write events to a file with the date in the filename.<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"layout="${longdate} ${uppercase:${level}} ${message}" />--><target xsi:type="File" name="info"layout="${logLayout}"fileName="${logDir}/info/${logFileName}"archiveFileName="${logDir}/info/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /><target xsi:type="File" name="debug"layout="${logLayout}"fileName="${logDir}/debug/${logFileName}"archiveFileName="${logDir}/debug/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /><target xsi:type="File" name="error"layout="${logLayout}"fileName="${logDir}/error/${logFileName}"archiveFileName="${logDir}/error/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /><target xsi:type="File" name="warn"layout="${logLayout}"fileName="${logDir}/warn/${logFileName}"archiveFileName="${logDir}/warn/${logArchiveFileName}"archiveAboveSize="10485760"archiveNumbering="Sequence"maxArchiveFiles="100"concurrentWrites="true"keepFileOpen="true"openFileCacheTimeout="30"encoding="UTF-8" /></targets><rules><!-- add your logging rules here --><!--Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"<logger name="*" minlevel="Debug" writeTo="f" />--><logger name="*" minlevel="Info" maxlevel="Info" writeTo="info" /><logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debug" /><logger name="*" minlevel="Error" maxlevel="Error" writeTo="error" /><logger name="*" minlevel="Warn" maxlevel="Warn" writeTo="warn" /></rules>
</nlog>

定义了5种log类型Debug,Info,Debug,Error,Warn,详细配置可以自己定义。
定义一个常用的log类

  public class NLogHelper{private static Logger _log = NLog.LogManager.GetCurrentClassLogger();/// <summary>/// Debug日志/// </summary>/// <param name="log"></param>public static void Debug(string log){_log.Debug(log);}/// <summary>/// Error日志/// </summary>/// <param name="log"></param>public static void Error(string log){_log.Error(log);}/// <summary>/// Warn日志/// </summary>/// <param name="log"></param>public static void Warn(string log){_log.Warn(log);}/// <summary>/// Info日志/// </summary>/// <param name="log"></param>public static void Info(string log){_log.Info(log);}/// <summary>/// 详细异常日志/// </summary>/// <param name="ex"></param>public static void Exception_Error(Exception ex){try{if (ex != null){StringBuilder strBuilder = new StringBuilder();strBuilder.Append("【异常日志消息】");strBuilder.AppendLine(ex.Message);strBuilder.Append("【异常日志Trace】");strBuilder.AppendLine(ex.StackTrace);strBuilder.Append("【异常日志全部】");strBuilder.Append(ex.ToString());_log.Error(strBuilder.ToString());}}catch (Exception){}}}

调用代码

   NLogHelper.Info($"系统正在运行中...");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

整车 EOL下线 测试系统介绍

EOL测试系统背景 随着国家对环保事业的愈加重视&#xff0c;电动汽车以其绿色清洁的驱动方式&#xff0c;逐渐成为政策扶持 的重点对象。一方面&#xff0c;国家对电动汽车越来越重视&#xff0c;在另外一个方面&#xff0c;人们也越来越乐于绿色 出行&#xff0c;增大了电动汽…

NestJS入门1:创建项目

1.初始化 管理员权限运行CMD进入某个文件夹&#xff0c;输入命令&#xff0c;进行初始化&#xff0c;该命令不在文件夹下产生文件 npm i -g nestjs/cli 2. 创建项目 不需要手工创建文件夹&#xff0c;在原路径下执行以下命令&#xff08;其中nest-start为项目名&#xff0c…

前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十二章 常用工具函数 (Utils配置)

前言 在项目开发中&#xff0c;我们经常会使用一些工具函数&#xff0c;也经常会用到例如loadsh等工具库&#xff0c;但是这些工具库的体积往往比较大&#xff0c;如果项目本身已经引入了这些工具库&#xff0c;那么我们就没有必要再引入一次&#xff0c;所以我们需要自己封装…

Spring Boot 笔记 023 注册页面

1.1 request.js请求工具 //定制请求的实例//导入axios npm install axios import axios from axios; //定义一个变量,记录公共的前缀 , baseURL const baseURL /api; const instance axios.create({baseURL})//添加响应拦截器 instance.interceptors.response.use(result…

【VSCode编写JavaScript】

VSCode编写JavaScript ■ 下载安装VSCode■ VSCode统一配置■ 格式化工具■ Tab size &#xff08;代码缩进 2个字符&#xff09;![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7b79c59636f147c8b08a0fff37886e0a.png) ■ VSCode安装JS插件■ VSCode新建JS工程代码…

政安晨:【完全零基础】认知人工智能(五)【超级简单】的【机器学习神经网络】 —— 数据训练

回顾 作为这个系列文章的最后一篇&#xff0c;咱们先回顾一下建立神经网络的整体步骤&#xff0c;以实现对机器学习神经网络的整体认知&#xff1a; 在人工智能领域中&#xff0c;机器学习神经网络的数据训练部分是指通过将大量的输入数据输入到神经网络中&#xff0c;利用反…

OpenAI文生视频物理世界模型——Sora降世,AI视频领域降维打击令五大行业一夜变天!

年初六&#xff0c;OpenAI发布了“文生视频”的工具&#xff0c;Sora。AI技术变革又一次震撼了整个世界。或许你又开始担心&#xff0c;AI发展那么快&#xff0c;将会取代自己。但请记住&#xff0c;危机时代也是变革时代&#xff0c;变革就是机会。开工第一天&#xff0c;相信…

新能源汽车整车测试解决方案-热管理测试

热管理测试&#xff08;Thermal Management Test&#xff09; 整车热管理主要研究对象是电驱动系统及电池系统的温度控制和驾驶室的气候调节&#xff0c;满足关键零部件的冷却要求&#xff0c;确保各零部件的安全性与可靠性&#xff0c;提高车厢内乘员环境的舒适性&#xff0c…

【机器学习】数据清洗——基于Pandas库的方法删除重复点

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析

Copyparty是一个便携式文件服务器 Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析&#xff0c;这个漏洞研究了一些时间&#xff0c;不过这个不难 漏洞复现分析环境 Copyparty测试版本&#xff1a;1.8.0和1.8.2 系统&#xff1a;Windows10 和 Linux 运行环境&#xff1a;…

Leetcode 283.移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […

区块链革命:Web3如何改变我们的生活

随着技术的不断发展&#xff0c;区块链技术作为一种去中心化的分布式账本技术&#xff0c;正逐渐成为数字世界的核心。Web3作为区块链技术的重要组成部分&#xff0c;正在引领着数字化时代的变革&#xff0c;其影响已经开始渗透到我们生活的方方面面。本文将深入探讨区块链革命…

c# #if 与 Conditional属性宏的区别

测试代码 using System; using System.Diagnostics;namespace ConsoleApp1 {public class TestClass{[Conditional("Debug1")]public static void Func1(){Console.WriteLine("Conditional 宏");}public static void Func2(){ #if Debug2Console.WriteLin…

springboot当中使用EMQX(MQTT协议)

本篇博客主要围绕EMQX是什么&#xff1f;、能干什么&#xff1f;、怎么用&#xff1f; 三点来进行整理。 1、MQTT协议 1.1、MQTT简介 在了解EMQX前首先了解一下MQTT协议&#xff0c;MQTT 全称为 Message Queuing Telemetry Transport&#xff08;消息队列遥测传输&#xff0…

智慧城市驿站:智慧公厕升级版,打造现代化城市生活的便捷配套

随着城市化进程的加速&#xff0c;人们对城市生活质量的要求也越来越高。作为智慧城市建设的一项重要组成部分&#xff0c;多功能城市智慧驿站应运而生。它集合了信息技术、设计美学、结构工艺、系统集成、环保节能等多个亮点&#xff0c;将现代科技与城市生活相融合&#xff0…

qt for python创建UI界面

现在很多库都有用到python,又想使用QT creater创作界面&#xff0c;来使用。 1.使用的版本 使用虚拟机安装Ubuntu22.04&#xff0c;Ubuntu使用命令行安装qt,默认安装的是QT5&#xff0c;不用来回调了&#xff0c;就用系统默认的吧&#xff0c;不然安装工具都要费不少事情。pyt…

SimpleDateFormat为什么是线程不安全的?

目录 在日常开发中&#xff0c;Date工具类使用频率相对较高&#xff0c;大家通常都会这样写&#xff1a;这很简单啊&#xff0c;有什么争议吗&#xff1f;格式化后出现的时间错乱。看看Java 8是如何解决时区问题的&#xff1a;在处理带时区的国际化时间问题&#xff0c;推荐使用…

[力扣 Hot100]Day30 两两交换链表中的节点

题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 出处 思路 前两个结点先偷一手用交换val做&#xff0c;从链表第1…

算法面试八股文『 模型详解篇 』

说在前面 这是本系列的第二篇博客&#xff0c;主要是整理了一些经典模型的原理和结构&#xff0c;面试有时候也会问到这些模型的细节&#xff0c;因此都是需要十分熟悉的。光看原理还不够&#xff0c;最好是能用代码试着复现&#xff0c;可以看看李沐老师深度学习的教材&#…

沁恒CH32V30X学习笔记11---使用外部时钟模式2采集脉冲计数

使用外部时钟模式2采集脉冲计数 使用外部触发模式 2 能在外部时钟引脚输入的每一个上升沿或下降沿计数。将 ECE 位置位时,将使用外部时钟源模式 2。使用外部时钟源模式 2 时,ETRF 被选定为 CK_PSC。ETR 引脚经过可选的反相器(ETP),分频器(ETPS)后成为 ETRP,再经过滤波…