首页 > 编程语言 >C# 实现log日志系统的方法

C# 实现log日志系统的方法

时间:2024-04-10 10:11:34浏览次数:21  
标签:Task log C# void private EventArgs async 日志 logger

开发需要,实现一个简单日志系统,废话不多说,直接上代码。 以下基于winform实现。 首先nuget安装Nlog。不会使用nuget自行百度。

 1 using NLog;
 2 
 3 namespace LogDemo
 4 {
 5     public partial class Form1 : Form
 6     {
 7         private static Logger logger = LogManager.GetCurrentClassLogger();
 8         public Form1()
 9         {
10             InitializeComponent();
11             LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration("nlog.config");
12         }
13 
14         private async void btnLogDebug_Click(object sender, EventArgs e)
15         {
16             await Task.Run(() =>
17             {
18                 logger.Debug("Debug message logged.");
19             });
20         }
21 
22         private async void btnLogInfo_Click(object sender, EventArgs e)
23         {
24             await Task.Run(() =>
25             {
26                 logger.Info("Info message logged.");
27             });
28         }
29 
30         private async void btnLogWarning_Click(object sender, EventArgs e)
31         {
32             await Task.Run(() =>
33             {
34                 logger.Warn("Warning message logged.");
35             });
36         }
37 
38         private async void btnLogError_Click(object sender, EventArgs e)
39         {
40             await Task.Run(() =>
41             {
42                 logger.Error("Error message logged.");
43             });
44         }
45 
46         private async void btnLogException_Click(object sender, EventArgs e)
47         {
48             await Task.Run(() =>
49             {
50                 try
51                 {
52                     throw new InvalidOperationException("Demo exception thrown.");
53                 }
54                 catch (Exception ex)
55                 {
56                     logger.Error(ex, "Exception caught and logged.");
57                 }
58             });
59         }
60     }
61 }

其次,配置config。

新建一个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>
<target xsi:type="File" name="fileTarget" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${level} ${message} ${exception:format=tostring}" />
</targets>

<rules>
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
</nlog>

 

 

标签:Task,log,C#,void,private,EventArgs,async,日志,logger
From: https://www.cnblogs.com/Nicqx/p/18125423

相关文章

  • session与cookie的区别?
    1、cookie数据存放在第三方应用的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE,进行COOKIE欺骗,考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当......
  • Python的click库做命令行工作
    需求是MeterSphere测试计划状态是已完成/已结束,测试进度不是100%。排查发现是test_plan_test_case表中已取消关联的用例算在了测试用例总数导致的所以做了一个命令行工具方便其他人处理该问题pythonclick库常用函数详解_click函数-CSDN博客pythonClick库知识点汇总_python......
  • docker安装emqx
    1.端口介绍1883MQTT/TCP协议端口11883MQTT/TCP协议内部端口,仅用于本机客户端连接8883MQTT/SSL协议端口8081management/HTTP/S协议端口8083MQTT/WS协议端口8084MQTT/WSS协议端口2拉取镜像dockerpullemqx/emqx:v4.0.03.启动临时容器dockerrun-itd--name......
  • 发布一个自己的composer包
    首先我们创建一个空的目录,并且运行以下命令初始化一个空白的composer包composerinit可以在命令窗口看到有返回提示;需要输入包名Thiscommandwillguideyouthroughcreatingyourcomposer.jsonconfig.`Packagename(<vendor>/<name>):我这里写的是chaoyang/test,回......
  • Blazor OIDC 单点登录授权实例7 - Blazor hybird app 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorOIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorOIDC单点登录授权实例2-登录信息组件wasmBlazorOIDC单点登录授权实例3-服务端管理组件BlazorOIDC单点登录授权实......
  • slice() 和 splice()
    slice()-`slice()`方法用于创建一个新的数组,包含从原始数组中指定开始(含)到结束(不含)的元素的浅拷贝。-语法:`array.slice(start,end)`-参数:-`start`:必需,规定从何处开始选取。如果是负数,则规定从数组结尾处向前的偏移量。-`end`:可选,规定在哪里结束选取。默认为......
  • source 和export 命令的区别
    1、sourcesource的解释,内置的shell命令,其功能是什么?什么是shell?source指令的作用:1、刷新当前shell环境2、在当前环境使用source执行Shell脚本3、从脚本中导入一个shell功能函数4、从另一个Shell脚本中读取变量一、概述source命令是一个内置的shell命令,用于从当前shel......
  • uview2.0版本,h5内网,无网络下icon图标不显示
    在项目目录下找到/node_modules/uview-ui/components/u-icon/u-icon.vue路径的文件由其中的代码片段可知,官方使用的是阿里云图标库的线上库,浏览器访问https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf这个地址,下载字体文件放到本地的static文件目录下然后将u-icon.vue......
  • 进入Docker容器内部的文件夹
    如果你要进入Docker容器内部的文件夹,可以使用以下命令:首先,使用dockerps命令查找正在运行的容器。找到你要进入的容器的ContainerID。然后,使用以下命令进入容器的命令行界面:dockerexec-it<ContainerID>/bin/bash将<ContainerID>替换为你要进入的容器的实际Contai......
  • 超抗干扰LCD液晶段码驱动芯片VK2C23A/B 适用于三相电表,导轨电表,传感器等产品
    VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。L23+01特点:•工作电压2.4-5.5V•......