.Net日志组件之NLog的使用和配置

文章目录

  • .Net日志组件之NLog的使用和配置
    • 1、新建.Net8控制台项目
    • 2、Nuget安装NLog组件
    • 3、添加配置文件nlog.config
    • 4、右键文件nlog.config,修改属性为“始终复制 or 较新则复制”
    • 5、编写nlog.config配置文件内容
    • 6、编写c#代码测试记录简单日志
    • 7、编写c#代码测试记录实体日志
    • 8、配置文件参考链接

.Net日志组件之NLog的使用和配置

1、新建.Net8控制台项目

2、Nuget安装NLog组件

install-package NLog.Extensions.Logging

3、添加配置文件nlog.config

4、右键文件nlog.config,修改属性为“始终复制 or 较新则复制”

5、编写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"><!--输出目标,往哪里输出--><targets><!--此部分中的所有目标将自动异步--><default-wrapper xsi:type="AsyncWrapper"></default-wrapper><!--type:日志输出类型 File:文件 ColoredConsole:控制台--><!--fileName:日志存储的路径及名称--><!--layout:日志输出格式--><!-- archiveFileName:要用于存档的文件的名称 可以指定日志 --><!-- archiveAboveSize:以字节为单位的大小,超过该大小的日志文件将被自动存档 --><!-- archiveNumbering:对文件档案进行编号的方式 --><!-- concurrentWrites:当使用keepFileOpen = true时,支持从同一机器主机上的多个进程优化并发写入同一日志文件。通过使用一种特殊的技术,它可以让文件从多个进程中打开。如果只有单个进程(和单个 AppDomain)应用程序正在记录日志,那么设置为concurrentWrites = False会更快。 --><!-- keepFileOpen:指示是否在每次记录事件时保持日志文件打开,将此属性更改为 true 将大大提高性能,但也会保持文件句柄锁定。启用此选项时,请考虑设置openFileCacheTimeout = 30,因为它将允许存档操作并对被删除的日志文件做出反应。 --><!--项目日志保存文件路径说明fileName="${basedir}/保存目录,以年月日的格式创建/${shortdate}/${记录器名称}-${单级记录}-${shortdate}.txt"--><target name="info_file" xsi:type="File"fileName="${basedir}/Logs/${shortdate}/info_${shortdate}.txt"layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring}"archiveFileName="${basedir}/archives/info_${shortdate}-{#####}.txt"archiveAboveSize="102400"archiveNumbering="Sequence"concurrentWrites="true"keepFileOpen="false" /><target name="error_file" xsi:type="File"fileName="${basedir}/Logs/${shortdate}/error_${shortdate}.txt"layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring}"archiveFileName="${basedir}/archives/error_${shortdate}-{#####}.txt"archiveAboveSize="102400"archiveNumbering="Sequence"concurrentWrites="true"keepFileOpen="false" /><targetxsi:type="ColoredConsole"name="colorConsole"encoding="Encoding"detectConsoleAvailable="true"detectOutputRedirected="false"useDefaultRowHighlightingRules="false"header="--------------------"layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${exception} ${newline} ${stacktrace} ${newline}"footer="---------------------"><highlight-row condition="level == LogLevel.Trace" foregroundColor="DarkGray"/><highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkBlue"/><highlight-row condition="level == LogLevel.Info" foregroundColor="White"/><highlight-row condition="level == LogLevel.Warn" foregroundColor="DarkYellow"/><highlight-row condition="level == LogLevel.Error" foregroundColor="Red"/><highlight-row condition="level == LogLevel.Fatal" foregroundColor="DarkRed"/></target><!--使用可自定义的着色将日志消息写入控制台--><!-- <target name="console" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" /> --></targets><!--规则配置,final - 最终规则匹配后不处理任何规则--><!--定义使用哪个target输出--><rules><!-- 优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL --><!-- 将所有日志输出到文件 --><logger name="*" minlevel="Trace" maxlevel="Warn" writeTo="info_file" /><logger name="*" minlevel="Error" writeTo="error_file" /><!-- 将所有日志输出到控制台  --><logger name="*" minlevel="Debug" writeTo="colorConsole" /></rules>
</nlog>

6、编写c#代码测试记录简单日志

private static Logger _logger = LogManager.GetCurrentClassLogger();/// <summary>/// 测试记录日志/// </summary>public static void TestWriteLog(){//记录日志_logger.Info("测试NLog写日志 - Info");try{//转换var a = Convert.ToInt32("测试NLog写日志 - Error");}catch (Exception e){//记录日志_logger.Error(e, "测试NLog写日志 - Error");}}

在这里插入图片描述


2024-09-19 14:25:52.0496 | 0 | INFO | TestNLogApp.TestNLogService | 测试NLog写日志 - Info 
2024-09-19 14:35:45.2005 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"f387511d-5f9d-4173-be77-4e3d0d535002", "Name":"姓名 - 0", "Age":23, "Birthday":"12/20/2024", "Hobbys":[]} 
2024-09-19 14:35:45.2311 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"1ae83538-3e8d-4113-8417-5d6715e2cfaf", "Name":"姓名 - 1", "Age":25, "Birthday":"12/17/2026", "Hobbys":[]} 
2024-09-19 14:35:45.2501 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"55d545af-f9fc-4a3c-817e-6713f697e0f3", "Name":"姓名 - 2", "Age":22, "Birthday":"10/26/2028", "Hobbys":[]} 
2024-09-19 14:35:45.2501 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"ea8d300d-caf9-4afb-a02f-a88f5a2ef946", "Name":"姓名 - 3", "Age":18, "Birthday":"03/12/2015", "Hobbys":["篮球,足球,羽毛球,麻将"]} 
2024-09-19 14:35:45.2501 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"57b1bbf7-87b2-4847-b404-dac0b8ff66e9", "Name":"姓名 - 4", "Age":26, "Birthday":"04/01/2031", "Hobbys":[]} 
2024-09-19 14:35:45.2501 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"e4fc8688-a6fd-48c4-be56-def34edfce9b", "Name":"姓名 - 5", "Age":33, "Birthday":"11/05/2019", "Hobbys":["篮球,足球,羽毛球,麻将"]} 
2024-09-19 14:35:45.2501 | 0 | INFO | TestNLogApp.TestNLogService | New SystemUser at 2024-09-19 14:35:45,Detail is {"Id":"4db7bd7f-aef8-42df-a10d-a5bf822cbff2", "Name":"姓名 - 6", "Age":26, "Birthday":"05/02/2017", "Hobbys":[]} 

2024-09-19 14:25:52.0526 | 0 | ERROR | TestNLogApp.TestNLogService | 测试NLog写日志 - Error System.FormatException: The input string '测试NLog写日志 - Error' was not in a correct format.at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value)at System.Convert.ToInt32(String value)at TestNLogApp.TestNLogService.TestWriteLog() in D:\01.lingbug\04.code\15.testMiniAuth20240918\TestNLogApp\TestNLogService.cs:line 24
2024-09-19 14:56:30.6702 | 0 | ERROR | TestNLogApp.TestNLogService | 测试NLog写日志 - Error System.FormatException: The input string '测试NLog写日志 - Error' was not in a correct format.at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value)at System.Convert.ToInt32(String value)at TestNLogApp.TestNLogService.TestWriteLog() in D:\01.lingbug\04.code\15.testMiniAuth20240918\TestNLogApp\TestNLogService.cs:line 25

7、编写c#代码测试记录实体日志

public class SystemUser{public Guid Id { get; set; }public string Name { get; set; }public int Age { get; set; }public DateOnly Birthday { get; set; }public List<string> Hobbys { get; set; }}private static Logger _logger = LogManager.GetCurrentClassLogger();/// <summary>/// 测试记录日志 - 实体/// </summary>public static void TestWriteEntityLog(){for (int i = 0; i < 10; i++){//初始化var systemUser = new SystemUser();//赋值systemUser.Id = Guid.NewGuid();systemUser.Name = $"姓名 - {i}";systemUser.Age = Random.Shared.Next(18, 35);systemUser.Birthday = DateOnly.FromDateTime(DateTime.Now.AddYears(Random.Shared.Next(-10, 10)).AddMonths(Random.Shared.Next(-10, 10)).AddDays(Random.Shared.Next(-30, 30)));systemUser.Hobbys = new List<string>() { "篮球,足球,羽毛球,麻将" }.Skip(Random.Shared.Next(0, 2)).ToList();//记录日志_logger.Info("New SystemUser at {now},Detail is {@systemUser}", DateTime.Now, systemUser);}}

8、配置文件参考链接

  • NLog配置文件详解

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

苹果CMS插件:优化蜘蛛访问内容,提升百度收录率

确保蜘蛛抓取原始内容 专为苹果CMS设计的广告管理插件&#xff0c;能够智能识别搜索引擎蜘蛛与普通访客&#xff0c;确保蜘蛛访问时展示原始内容&#xff0c;从而提升被百度等搜索引擎收录的几率。 广告显示提升收益 对于普通访客&#xff0c;该插件则优先显示广告内容&#…

【HTTP】认识 URL 和 URL encode

文章目录 认识 URLURL 基本格式**带层次的文件路径****查询字符串****片段标识符** URL encode 认识 URL 计算机中非常重要的概念&#xff0c;并不仅仅是在 HTTP 中使用。用来描述一个网络资源所处的位置&#xff0c;全称“唯一资源定位符” URI 是“唯一资源标识符“严格的说…

Java 数据类型转换详解:隐式转换(自动转换)与强制转换(手动转换)

目录 前言 取值范围从小到大的关系&#xff1a; 隐式转换&#xff08;自动转换&#xff09; &#x1f4dc;示例 1&#xff1a;基本类型隐式转换 &#x1f4dc;示例 2&#xff1a;算术运算中的类型提升 &#x1f4dc;示例 3&#xff1a;byte、short 和 char 的自动转换 隐…

排序的实现

1&#xff0c;插入排序 时间复杂度O(N) 思路&#xff1a;当插入第i个元素时&#xff0c;前面i-1个元素已经排好&#xff0c;将第i个元素与前面的元素比较&#xff0c;找到插入的位置&#xff0c;原来位置的元素向后挪。 动图展示&#xff1a; 从上图可以看出&#xff0c;先把…

CS61C 2020计算机组成原理Lab03

Exercise 1: Familiarizing yourself with Venus .data .word 2, 4, 6, 8 n: .word 9.text main: # add t0, x0, x0# addi 是 "add immediate"&#xff08;立即数加法&#xff09;的缩写&#xff0c;表示这是一个加法指令&#xff0c;其中一个加数是一个立即数&am…

macos tcl-tk python图形库软件包安装 port 和brew 包管理工具安装方法和使用总结

macos下安装这个tcl-tk 图形库&#xff0c; 使用port和brew 安装时是不一样的&#xff0c; 软件包名称不一样&#xff0c;安装后的软件文件路径信息也不一样。 在brew 包管理工具中&#xff0c;这个软件包的名称就是tcl-tk&#xff0c; 安装方法为 brew install tcl-tk , 而…

昂科烧录器支持Senasic琻捷电子的蓝牙低功耗芯片SNP746

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Senasic琻捷电子的蓝牙低功耗芯片SNP746已经被昂科的通用烧录平台AP8000所支持。 SNP746是一款蓝牙低功耗芯片&#xff0c;集成了压力传感器和加速度传感器的测量电路。它是为…

表达式求值(综合应用的难题)

一、各种表达式的含义与操作 请看下面链接里面的博客吧&#xff0c;这是一位大佬写的&#xff0c;里面的图很是不错&#xff0c;可以看看。 各种表达式的概念与操作 二、题目 给定一个表达式&#xff0c;其中运算符仅包含 ,-,*,/&#xff08;加 减 乘 整除&#xff09;&…

产业报告 | 2024年中国机器人产业研究报告

近日&#xff0c;世界机器人大会在北京亦庄国际会展中心举办。据悉&#xff0c;这是国内最大的机器人展会&#xff0c;今年的展会规模更是创下新高&#xff0c;共有169家企业参展&#xff0c;展出的产品数量超过600款&#xff0c;观展人次超过30万&#xff0c;足见各行各业对机…

QT widgets 窗口缩放,自适应窗口大小进行布局

1. 窗口布局 2. 尺寸策略&#xff1a;扩展 Fixed (固定): 行为&#xff1a;控件的大小是固定的&#xff0c;不会随着窗口大小的变化而改变。它的大小由控件的 sizeHint() 返回的值决定。 适用场景&#xff1a;当你希望控件的大小保持不变&#xff0c;不随布局调整时使用&#x…

前端vue-插值表达式和v-html的区别

创建vue实例的时候&#xff0c;可以有两种形式。 1.let appnew Vue({}) 2 const appnew Vue({}) 3 el是挂载点&#xff0c;是上面div的id值 4 data中的值可以展示在上面div中 5 v-html标签里面如果有内容&#xff0c;则我们的新内容会把标签里面的内容覆盖掉

解决 Torch not compiled with CUDA enabled 问题 | MiniCPM3-4B 【应用开发笔记】

最近在研究测试MiniCPM3-4B&#xff0c;这里记录一下遇到的cuda和torch版本问题 在调试和运行MiniCPM3-4B过程中如果出现找不到某个包&#xff0c;就用pip进行安装&#xff0c;如果提示GPU相关的问题则需要进一步检查 解决 Torch not compiled with CUDA enabled 问题 一、查看…

Arthas 全攻略:让调试变得简单

文章目录 一、简介二、命令列表 一、简介 注意 &#xff1a; 我安装的版本是&#xff1a;Arthas V3.7.2 官网&#xff1a;https://arthas.aliyun.com/doc/ 相关错误解决方案请看GitHub&#xff1a;https://github.com/alibaba/arthas/issues Alibaba开源的Java诊断工具。 从…

我的AI工具箱Tauri版-MicrosoftTTS文本转语音

本教程基于自研的AI工具箱Tauri版进行MicrosoftTTS文本转语音服务。 MicrosoftTTS文本转语音服务 是自研的AI工具箱Tauri版中的一款功能模块&#xff0c;专为实现高效的文本转语音操作而设计。通过集成微软TTS服务&#xff0c;用户可以将大量文本自动转换为自然流畅的语音文件…

圣多纳释放法,达到内心的平静

圣多纳释放法的关键在于&#xff1a;我们被情绪控制时&#xff0c;不应该压抑情绪或是发泄情绪。 利用释放法处理情绪是最健康的方法&#xff0c;可以帮助我们获得自由与平静。当我们面对讨厌的人时&#xff0c;我们真正要做的并非压抑或者爆发&#xff0c;而是将“讨厌”这种…

仪表放大器AD620

AD623 是一款低功耗、高精度的仪表放大器&#xff0c;而不是轨到轨运算放大器。它的输入电压范围并不覆盖整个电源电压&#xff08;轨到轨&#xff09;&#xff0c;但在单电源供电下可以处理接近地电位的输入信号。 AD620 和 AD623 都是仪表放大器&#xff0c;但它们在一些关键…

HTB-Netmon(prtg配置文件获取,CVE-2018-9276复现)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解Netmon靶机 渗透流程 信息搜集 服务器开放了80HTTP、21FTP(匿名登录)、445SMB服务 FTP匿名登录 获取敏感文件 登录后台 网站登录需要 账号、密码 &#xff0c;尝试去FTP服务 碰下运气 通过翻阅ft…

基于Python flask的淘宝商品数据分析可视化系统,包括大屏和主题分析,还有回归预测

背景介绍 随着电子商务的迅猛发展&#xff0c;平台上积累了大量的用户行为和商品交易数据。这些数据蕴含着极大的商业价值&#xff0c;可以为市场趋势预测、商品优化以及用户行为分析提供重要的参考。淘宝作为全球最大的在线购物平台之一&#xff0c;拥有海量的商品和用户数据…

联想一体机怎么重装系统_联想一体机重装win10系统教程

联想一体机怎么重装系统&#xff1f;联想一体机重装系统有很多&#xff0c;有一键重装、有U盘重装、有硬盘重装等方式&#xff0c;最保险的方式是u盘重装系统。需要准备一个空U盘&#xff0c;然后利用第三方工具制作启动u盘&#xff0c;制作完成后进入pe重装系统&#xff0c;下…

集装箱机房可视化:高效管理与监控

通过图扑可视化平台实时监控集装箱机房的运行状态和环境参数&#xff0c;优化资源配置&#xff0c;提升运维效率&#xff0c;确保数据中心安全可靠运行。