c#Nlog文本日志,控制台日志,事件查看器日志(亲测有效)

C#快速配置NLog日志使用 NLog日志配置,定义了5种log类型Debug,Info,Debug,Error,Warn,详细配置可以自己定义。首先我们需要在Nuget中安装Nlog和Nlog-Schema。添加配置文件:NLog.config。定义一个常用的log类。 阅读详情
AI摘要

本文介绍了如何在C#项目中使用Nlog和EventLog进行日志记录。通过依赖注入的方式添加控制台日志和事件查看器日志输出,并展示了Nlog的配置文件设置,用于生成文本日志文件。文章还包含了创建和测试日志输出的代码示例。

c#Nlog文本日志,控制台日志,事件查看器日志

Nlog和EventLog的功能

  Nlog是比较方便的日志  功能要比log4要多,支持很多的日志输出方式,例如 ,控制台,文件,邮箱等等。
 EventLog 可以把日志输出到windows自带的事件管理器
  话不多说直接开始图文讲解

本次教程用的是依赖注入的框架引用的写法,不懂的同学可以去看一下基础语法,这里我就不多说了

为了方便展示功能用的控制台,我们先vs创建一个控制台管理项目,其次在添加Logging.Console的nuget引用
Logging.Console的nuget引用包括了依赖注入需要的引用所以就无需下载依赖注入需要的nuget,如对依赖注入的nuget
包版本有需求可自行更改
请添加图片描述然后我们搭建依赖注入的框架

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceCollection service = new ServiceCollection();
            service.AddLogging(t =>
            {
                t.AddConsole();//添加log日志输出
                t.SetMinimumLevel(LogLevel.Trace);//设置最高显示的日志级别
            });
            using (var sp = service.BuildServiceProvider())
            {


            }

            Console.ReadKey();
        }
    }
}

接着我们创建一个Test类用作输出日志文本

    public  class Test
    {
        private readonly ILogger<Test> logger;

        public Test(ILogger<Test> logger)
        {

            this.logger = logger;

        }

        public void qqq() {
            logger.LogDebug("11111111111111日志Debug");
            logger.LogWarning("2222222222222222日志Warning");
            logger.LogError("3333333333333日志Error");
        }
    }

然后把test类加入到依赖中,接着运行

            ServiceCollection service = new ServiceCollection();
            service.AddLogging(t =>
            {
                t.AddConsole();//添加log日志输出
                t.SetMinimumLevel(LogLevel.Trace);//设置最高显示的日志级别
            });
            service.AddScoped<Test>();
            using (var sp = service.BuildServiceProvider())
            {
                var testq = sp.GetRequiredService<Test>();


                testq.qqq();


            }

            Console.ReadKey();

这时我们可以看到控制台已经打印了我们的日志
请添加图片描述此时已经完成基本的控制台输日志

windows的事件查看器

首先需要下载nuget包
请添加图片描述然后添加到依赖运行即可

             t.AddEventLog();//把日志输入到windows的事件管理器,只支持windows系统   需要下载nuget  Microsoft.Extensions.Logging.EventLog

这时候我们打开事件查看器可以看到已经打印出来了
请添加图片描述

Nlog

以上只能满足控制台的日志输出,,而且事件管理器linux是没有的。无法满足项目中日志文件的需求,这时候我们就需要用到nlog进行一些复杂的日志输出

首先老样子,先把nlog的nuget包下载下来

请添加图片描述nlog是需要配置config文件的,
首先我们去nlog官网复制他的config文件
https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-6
请添加图片描述然后本地项目创建一个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"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="c:\temp\internal-nlog-AspNetCore.txt">

  <!-- enable asp.net core layout renderers -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <!-- the targets to write to -->
  <targets>
    <!--xsi:type代表的文件类型   
    fileName=输出到的地址   
    name=日志名称   
    layout=文件的输出格式
    archiveAboveSize   表示日志文件最大为多少字节   超过就存档就是重新创建一个
    maxArchiveFiles   表示最多保存多少个文件
    maxArchiveDays  日志保存多少天-->
    <target xsi:type="File" name="allfile" fileName="logs/log-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}"   archiveAboveSize="1000" maxArchiveFiles="3"/>

    <!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
    <target xsi:type="File" name="ownFile-web" fileName="nlog-AspNetCore-own-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite}" />

    <!--Console Target for hosting lifetime messages to improve Docker / Visual Studio startup detection -->
    <target xsi:type="Console" name="lifetimeConsole" layout="${MicrosoftConsoleLayout}" />
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <!--日志进来之后是按顺序从上往下匹配   
    writeTo是代表输出到哪个日志 比如 writeTo="allfile"就是把日志输出到name值等于allfile的日志    
    final="true"表示日志如同通过就不继续往下匹配了 如果没通过在继续往下匹配    
    minlevel=最小显示的日志级别 
   maxlevel表示最大级别的日志
   name表示名称  有多种发写法  比如  abc.*表示abc开头的日志都输出-->
    <logger name="*" minlevel="Info"  writeTo="allfile" />

    <!--Output hosting lifetime messages to console target for faster startup detection -->
    <logger name="Microsoft.Hosting.Lifetime" minlevel="Info" writeTo="lifetimeConsole, ownFile-web" final="true" />

    <!--Skip non-critical Microsoft logs and so log only own logs (BlackHole) -->
    <logger name="Microsoft.*" maxlevel="Info" final="true" />
    <logger name="System.Net.Http.*" maxlevel="Info" final="true" />

    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>
</nlog>

我已对文件进行调整方便展示效果,过多就不细说了,具体属性意思可看注释,多的可以去nlog官网看文档
创建的nlog.config文件要设置成较新则复制
请添加图片描述

接着我们循环10000次执行日志输出任务并且把不需要的包注释掉

   //t.AddConsole();//添加log日志输出
  //t.AddEventLog();//把日志输入到windows的事件管理器,只支持windows系统   需要下载nuget  Microsoft.Extensions.Logging.EventLog
          using (var sp = service.BuildServiceProvider())
            {
                var testq = sp.GetRequiredService<Test>();


                for (int i = 0; i < 10000; i++)
                {
                    testq.qqq();
                }


            }

这时候就自动创建文本日志了,我设置放在bin文件的根目录下了,大家可去自己设置的路径下查看
请添加图片描述

Nlog 使用教程(C#) Nlog的使用教程 Nuget包引入: 手动生成配置文件:NLog.Config <?xml version="1.0" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" throwExceptions="false" 阅读详情

相关推荐

NLog详细教程-2022/12/01

配置文件详解

lilizys的博客 3190

.Net Core 2配置 Nlog 日志组件学习笔记 [1]

开发工具:Visual Studio 2017 要求:.NET 4.6+ or .NET standard 2 [1] 新建一个.net core项目且编辑csproj文件 或者直接用nuget management Nlog最新版本:   NLog.Web.AspNetCore4.8+ csproj文件: <PackageReference Includ...

521

告别混乱日志!在C# Winform项目中用NLog实现日志分级与文件自动归档

本文详细介绍了如何在C# Winform项目中使用NLog实现日志分级与文件自动归档,解决生产环境中的日志管理难题。通过XML配置实现日志分级策略、文件存储规划和自动化归档清理,提升日志检索效率并避免文件无限膨胀。特别适合长期运行的桌面应用开发。

weixin_30271335的博客 107

C# 中使用NLog记录日志

C# 中使用NLog记录日志

bazinga_y的博客 4099

双极性步进电机驱动技术:从H桥电路到精准控制

本文深入解析了双极性步进电机驱动技术的核心,从H桥电路的基础原理讲起,阐述了其作为实现电机正反转和精准控制的关键。文章详细介绍了H桥的工作模式、防共态导通设计,并对比了L298N、DRV8825及TMC2209等主流集成驱动芯片的选型。进一步探讨了通过微步进与电流矢量控制实现平滑、静音运行的高级技术,并提供了基于STM32的实战代码与避坑指南,帮助开发者从理论到实践全面掌握精准运动控制。

tea88的博客 596

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

C#Nlog配置文件 万能模板 输出到控制台及文件

项目中经常用到的配置文件模板,在这里做一下记录,也方便给大家查看,直接上代码: 已用过很多次了。 具体解释,请参考其他文章,网上已经写的很详尽了。 直接拿去使用,不谢:       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">             layout= "$[${date:format=yyyy

sanningjing的博客 4989

rockchip rk3566 android11 网口log报错: DMA engine initialization failed

问题描述:上电初始化前将网口插入,然后上电初始化网口能够正常使用,且能够找到PHY,ifconfig 查看能够有eth0 产生,网口正常使用且能够热插拔,但上电初始化时,不插入网口,就会报DMA engine initialization failed 错误,DMA 初始化的时候出错了。 分析:一般产生这个问题可以认为是GMAC 的工作时钟出问题了。先测量时钟引脚是否有时钟,时钟频率以及幅度等指标是否正常,主要确认以下几个方面: 1.IOMUX 出错,检查时钟脚寄存器值是否正确。 2.时钟方向以及配置

qq_48709036的博客 2万+

在C#中使用 NLog 库进行日志记录

NLog 是 .NET 的日志记录框架。具有丰富的日志路由和管理能力,极大地帮助您生成和管理日志。NLog 是一个库,可以轻松地同时记录和管理多个不同区域(例如控制台、数据库或文本文件)中的数据。我们可以按如下方式列出 NLog 的功能:扩展:在日志记录时,您可能希望将日志记录保存在不同的位置,例如数据库、文本文件或控制台。NLog 允许您通过单个配置文件执行这些操作。此外,还有一些解决方案适用于...

dotNET跨平台 739

蓝桥杯算法:打印图形——六芒星

【输入格式】 输入一行包含一个整数 n。 【输出格式】 输出一个六芒星,表示满足题意的图形。 【样例输入】 3 4 【样例输出】 【评测用例规模与约定】 对于所有评测用例,1 ≤ n ≤ 20。 总结: 第一次做图形题,做了蛮久,图形题有很多的方式去完成,它考验的是你能不能找到更简单的那一种方式. 我初看到这个图形,第一种想法是把这个六芒星当做六个小三角形来做,然后以某种规则排列一下,就能做出来,但是尝试了一下感觉太麻烦了。 然后我的第二种想法是,这个图形是对称图形,怎么能写出一半吗? 这样另一半想办

KeepCodeing 3836

FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化

使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。

贾saisai的博客 3280

  C# 使用NLog记录日志

NLog是一个后来发展起来的日志功能,比起Log4net要年轻许多,但是功能确实非常好用,并且配置简单。 1、安装Nlog 和Nlog configuration 点击安装下边的NLog.Config就行了,NLog会一起安装成功。 2、配置文件 安装完之后项目里边多了(nllog.config属性设置=》复制到生成目录:始终复制,生成操作:内容) 配置内容写在这个里边。主要用到两个标签: Target:这...

hezheqiang的专栏 1896

本地构建AI智能分析助手之 05 PandasAI如何MySQL数据库 (教程含源码)

与 PostgreSQL 连接器类似,MySQL 连接器允许您连接到 MySQL 数据库。即使您不熟悉 MySQL 或 PandasAI,它也设计得易于使用。

iCloudEnd的博客 704

在C#项目中使用NLog进行日志记录的方法步骤

核心步骤:安装包 → 配置(定义输出目标 / 规则)→ 代码中创建 / 注入ILogger→ 输出不同级别日志(异常日志务必传Exception对象);项目适配:控制台应用直接用ASP.NETCore 需集成依赖注入并调用UseNLog();关键规范:每个类对应一个 Logger(便于定位日志来源),异常日志必须包含堆栈信息,生产环境合理设置日志级别。

sillyoung的博客 29

基于Blender软件对Matterport3D数据集场景可视化

使用Blender软件对 Matterport3D 中的室内场景进行可视化。

qq_44100524的博客 290

Xilinx DDR3 MIG IP核设计--汇总导航

快速上手Xilinx DDR3 IP核----汇总篇

孤独的单刀 2万+

5分钟快速上手NLog:从零开始配置你的第一个日志系统 [特殊字符]

NLog是.NET平台上最强大的结构化日志记录框架之一,为应用程序提供**高级日志记录功能**和**灵活的配置选项**。无论你是开发新手还是经验丰富的工程师,都能在短短5分钟内学会使用NLog来构建专业的日志系统。本文将为你提供一份完整的NLog入门指南,让你快速掌握这个强大的日志工具。 ## 🤔 为什么选择NLog? NLog作为.NET生态系统中**最受欢迎的日志框架**,具有以下核心优

gitblog_00216的博客 992

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# NLog入门

文章目录前言一、特征二、目标三、支持四、入门1.添加引用2.创建配置文件3.启用复制到bin文件夹4.更新program.cs5.配置appsettings.json6.写日志7.输出示例 前言 NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台。NLog使写入多个目标变得容易 。(数据库,文件,控制台)并即时更改日志记录配置。 NLog支持结构化 和传统日志记录。 NLog的重点是:高性能,易于使用,易于扩展和灵活配置。 一、特征 易于配置: 通过配置文件 和以编程方

我要的光荣哪怕只有一秒 4551

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

c#的日志插件NLog基本使用

本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logger 使用LogManager创建Logger实例,最好一个类里面一个Logger实例 写法一 这种写法,记录的日志文件,显示的logger名字,是命名空间加上logger所在...

weixin_30505225的博客 497

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# Nlog库

两条规则分别将所有日志的最小级别为Trace的日志写入文件,最小级别为Info的日志输出到控制台。在项目中创建一个名为NLog.config的文件,放在项目根目录或App_Data文件夹中。最常用的是XML配置文件。:用于记录可能的问题或异常情况,但不一定会导致程序失败。:用于记录严重错误,通常会导致程序终止或严重的数据丢失。:用于记录程序的一般性运行信息,例如程序的启动和停止。:用于记录程序的执行流程信息,通常只在调试时使用。:用于记录程序在调试过程中产生的信息。:用于记录程序运行时发生的错误或异常。

m0_73401543的博客 881

C#.NET NLog 详解

NLog 是 .NET 平台上最流行的开源日志框架之一,特色是 灵活的配置、丰富的输出目标(Target),以及 高性能 的异步写入能力。 适用场景:从控制台、文件、数据库、网络 到 ElasticSearch、Seq、Azure Table Storage 等各种日志收集后端。 支持文件、数据库(SQL/NoSQL)、控制台、邮件、Elasticsearch 等 50+ 内置目标,并可通过插件扩展

tangPHP的博客 1837

NLog文章系列——入门教程(下)

作者:Jarosław Kowalski jaak@jkowalski.net>翻译:Dflying Chen:http://dflying.cnblogs.com/ 原文:http://www.nlog-project.org/tutorial.html本文为《NLog文章系列》的第四篇,即入门教程的最后一篇。将继续描述演示用NLog书写日志的方法。 自动重新配置NLog

badwps的专栏 1415

别再手动复制NLog.config了!用C#代码动态配置NLog,灵活应对多环境部署

本文探讨了如何通过C#代码动态配置NLog,替代传统的静态NLog.config文件,以灵活应对多环境部署需求。文章详细介绍了动态配置的优势、核心API使用方法,以及在不同环境下的实战解决方案,帮助开发者提升日志系统的灵活性和可维护性。

weixin_42683394的博客 247

以编程方式进行NLog的配置【转】

步骤如下:1. 创建一个LoggingConfiguration对象,用来保存配置信息 2. 至少创建一个输出目标对象 3. 设置该输出目标对象的属性 4. 设置LoggingRule对象,并将其添加到LoggingConfiguration对象的LoggingRules集合中 5. 启用该LoggingConfiguration对象(将LogManager.Configura...

weixin_30702413的博客 165
下一篇: c#使用客户端、服务端、内存缓存
問安
博客等级 码龄6年 16粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值