WPF使用log4net记录日志

log4net是为.NET提供的一个日志框架,它基于Apache的log4j。
主要的功能如下

  • 可定制化的输出格式。普通日志格式、JSON等
  • 结构化的日志。
  • 适配多线程。
  • 可以输出到多种不同的目标,如文件、终端、email等等。

本文简单介绍其使用,对于小项目的日志打印已经足够了。更多高阶用法,log4net有非常详尽的文档,可以参考 https://logging.apache.org/log4net/release/manual/introduction.html

本文包含如下内容。

  • 创建一个WPF项目
  • 下载log4net依赖
  • 配置log4net依赖
  • 打印日志
  • 总结

1. 创建一个WPF项目


在这里插入图片描述

2. 下载log4net依赖

菜单栏Tools -> NuGet Package Manager -> Manage NuGet Package for Solution
在这里插入图片描述
或者 在右侧的 Solution Explorer窗格右击Solution也会弹出相关菜单。

Browse界面搜索log4net,右侧选中我们的项目,Version选择合适的版本(一般最新),点击install
在这里插入图片描述
点击Apply
在这里插入图片描述
成功后 log4net 会出现在我们的解决方案的依赖列表中
在这里插入图片描述

3. 配置log4net依赖

log4net有3个主要的组件:loggers、appenders、layouts。

提供两种方式对日志系统进行配置:代码控制、配置文件。

本文采用配置文件的方式。

先创建App.config配置文件,并将其Copy to Output Directory设置为 Copy if newer 或者 Copy Always
在这里插入图片描述

在这里插入图片描述
App.config的内容如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
	</configSections>
	<log4net>
		<root>
			<level value="ALL"/>
		</root>
		
		<logger name="MainLog">
			<level value="ALL"/>
			<appender-ref ref="LogFileAppender"/>
		</logger>

		<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
			<!-- 日志文件输出位置 -->
			<param name="File" value="Log/logcat"/>
			<!-- 日志等级过滤,只有>=INFO的日志才会被记录 -->
			<filter type="log4net.Filter.LevelRangeFilter">
				<param name="LevelMin" value="INFO"/>
			</filter>
			<!-- 自动追加 -->
			<param name="AppenderToFile" value="true"/>
			<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
			<!-- 以日期进行备份 -->
			<param name="RollingStyle" value="Date"/>
			<!-- 单个日志的最大容量 -->
			<param maximumFileSize="" value="10M"/>
			<!-- 备份日志文件的最大数量 -->
			<maxSizeRollBackups value="10" />
			<param name="DatePattern" value="yyyyMMdd&quot;.log&quot;"/>
			<param name="StaticLogFileName" value="false"/>
			<!--输出格式-->
			<!-- 样例:2023-12-28 11:36:56,630 INFO MainLog - Some Info log -->
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%date %level %logger - %message%newline"/>
			</layout>
		</appender>
	</log4net>
</configuration>

4. 打印日志

下面的代码在MainWindow初始化时尝试打印日志

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", ConfigFileExtension = "config", Watch = true)]
namespace Demo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private static log4net.ILog logger = log4net.LogManager.GetLogger("MainLog");
        public MainWindow()
        {
            logger.Debug("Some debug log"); /* 我们配置的日志最低等级为INFO,所以这里的DEBUG日志不会被输出到日志文件 */
            logger.Info("Some Info log");
            logger.Warn("Some Warn log");
            logger.Error("Some Error log");
            logger.Fatal("Some Fatal log");
        }
    }
}

最终的日志内容如下

2023-12-28 11:36:56,630 INFO MainLog - Some Info log
2023-12-28 11:36:56,636 WARN MainLog - Some Warn log
2023-12-28 11:36:56,636 ERROR MainLog - Some Error log
2023-12-28 11:36:56,637 FATAL MainLog - Some Fatal log

5. 总结

到这里已经满足基本项目需求,就不去研究更多复杂的配置了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值