C# winfrom 添加Log4Net日志库
简介:log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
当项目发布之后遇到一些问题,无法定位无法调试解决起来困难很大。下面我在项目中的服务程序使用Log4Net的日志记录功能:
1.在包管理工具中安装log4net
2、创建LogHelper类以及log4net.config配置文件。
using log4net;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApp1111111111111
{
public class LogHelp
{
private static readonly ILog logInfo = LogManager.GetLogger("Log");
private static readonly ILog logErr = LogManager.GetLogger("Err");
/// <summary>
/// 记录正常的消息
/// </summary>
/// <param name="msg">消息内容</param>
public static void info(string msg)
{
logInfo.Info(msg);
}
/// <summary>
/// 记录异常信息
/// </summary>
/// <param name="msg">异常信息内容</param>
public static void error(string msg)
{
StackTrace stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
logErr.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg);
}
}
}
3. 在App.config中添加log4net配置信息 ,(log4net节点是configuration子节点)
<configSections>必须是<configuration>的第一个子节点<log4net可以是最后一个节点>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<log4net>
<logger name="Log">
<level value="INFO" />//正常日志
<appender-ref ref="RollingLog" />
</logger>
<logger name="Err">
<level value="ERROR" />异常日志
<appender-ref ref="RollingErr" />
</logger>
<appender name="RollingLog" type="log4net.Appender.RollingFileAppender">
<file value="WindowsServiceLog\" />//存放正常日志文件夹
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.txt'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 操作信息:%m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="RollingErr" type="log4net.Appender.RollingFileAppender">
<file value="Err\" />存放异常日志文件夹
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.txt'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 错误描述:%m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
</log4net>
</configuration>
4. 在项目Properties->AssemblyInfo.cs文件中 添加 [assembly: log4net.Config.XmlConfigurator()]
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
5.调用
private void button28_Click(object sender, EventArgs e)
{
try
{
int[] aa = { 23, 54, 23 };
for (int i = 0; i < aa.Length; i++)
{
Console.WriteLine(aa[i]/0);
}
LogHelp.info("正常");
}
catch (Exception ex)
{
LogHelp.error(ex.Message);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!