log4net .net6的应用程序标准案例

log4net .net6的应用程序标准案例

因为.net5及以上版本的Winform与WPF已经没有AssemblyInfo.cs文件,所以需要静态注入.

第一步 安装log4net

1.使用命令方法

Install-Package log4net

2.通过NuGet直接搜索进行安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n841D1z1-1669279966884)(C:\Users\CTI-C#2\AppData\Roaming\Typora\typora-user-images\image-20221124163827956.png)]

第二步 编写log4net配置参数

1.添加 log4net.config 文件并更改属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ISr6Ly5-1669279827932)(C:\Users\CTI-C#2\AppData\Roaming\Typora\typora-user-images\image-20221124163827956.png)]

2.编写 log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
	</configSections>
	<log4net>
	
		<!--错误日志类-->
		<logger name="logerror">
			<!--日志类的名字-->
			<level value="ALL" />
			<!--定义记录的日志级别-->
			<appender-ref ref="ErrorAppender" />
			<!--记录到哪个介质中去-->
		</logger>
		<!--信息日志类-->
		<logger name="logwarn">
			<level value="ALL" />
			<appender-ref ref="WarnAppender" />
		</logger>
		<!--信息日志类-->
		<logger name="loginfo">
			<level value="ALL" />
			<appender-ref ref="InfoAppender" />
		</logger>
		<!--信息日志类-->
		<logger name="logdebug">
			<level value="ALL" />
			<appender-ref ref="DebugAppender" />
		</logger>
		<!--错误日志附加介质-->
		<appender name="ErroeLogInfoAppender" type="log4net.Appender.RollingFileAppender">
			<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
			<param name="File" value="Log\\LogError\\"/>
			<!--日志输出到exe程序这个相对目录下-->
			<param name="AppendToFile" value="true"/>
			<!--备份文件的个数-->
			<param name="MaxFileSize" value="10240"/>
			<!--输出的日志不会覆盖以前的信息-->
			<param name="MaxSizeRollBackups" value="100"/>
			<!--当个日志文件的最大大小-->
			<param name="StaticLogFileName" value="false"/>
			<!--是否使用静态文件名-->
			<param name="DatePattern" value="yyyyMMddHH'.log'"/>
			<!--日志文件名-->
			<param name="RollingStyle" value="Date"/>
			<!--文件创建的方式,这里是以Date方式创建-->
			<!--错误日志布局-->
			<layout type="log4net.Layout.PatternLayout">
				<!--日志文本记录格式-->
				<conversionPattern value="[时间:%date]%n[线程:%t]%n[行号:%l]%n[内容:%message]%n%n"/>
			</layout>
		</appender>
		<!--警告日志附加介质-->
		<appender name="WarnInfoAppender" type="log4net.Appender.RollingFileAppender">
			<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
			<param name="File" value="Log\\LogWarn\\"/>
			<!--日志输出到exe程序这个相对目录下-->
			<param name="AppendToFile" value="true"/>
			<!--备份文件的个数-->
			<param name="MaxFileSize" value="10240"/>
			<!--输出的日志不会覆盖以前的信息-->
			<param name="MaxSizeRollBackups" value="100"/>
			<!--当个日志文件的最大大小-->
			<param name="StaticLogFileName" value="false"/>
			<!--是否使用静态文件名-->
			<param name="DatePattern" value="yyyyMMddHH'.log'"/>
			<!--日志文件名-->
			<param name="RollingStyle" value="Date"/>
			<!--文件创建的方式,这里是以Date方式创建-->
			<!--错误日志布局-->
			<layout type="log4net.Layout.PatternLayout">
				<!--日志文本记录格式-->
				<conversionPattern value="[时间:%date]%n[线程:%t]%n[行号:%l]%n[内容:%message]%n%n"/>
			</layout>
		</appender>
		<!--信息日志附加介质-->
		<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
			<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
			<param name="File" value="Log\\LogInfo\\"/>
			<!--日志输出到exe程序这个相对目录下-->
			<param name="AppendToFile" value="true"/>
			<!--备份文件的个数-->
			<param name="MaxFileSize" value="10240"/>
			<!--输出的日志不会覆盖以前的信息-->
			<param name="MaxSizeRollBackups" value="100"/>
			<!--当个日志文件的最大大小-->
			<param name="StaticLogFileName" value="false"/>
			<!--是否使用静态文件名-->
			<param name="DatePattern" value="yyyyMMddHH'.log'"/>
			<!--日志文件名-->
			<param name="RollingStyle" value="Date" />
			<!--文件创建的方式,这里是以Date方式创建-->
			<!--错误日志布局-->
			<layout type="log4net.Layout.PatternLayout">
				<!--日志文本记录格式-->
				<conversionPattern value="[时间:%date]%n[线程:%t]%n[行号:%l]%n[内容:%message]%n%n"/>
			</layout>
		</appender>
		<!--调试日志附加介质-->
		<appender name="DebugInfoAppender" type="log4net.Appender.RollingFileAppender">
			<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
			<param name="File" value="Log\\LogDebug\\"/>
			<!--日志输出到exe程序这个相对目录下-->
			<param name="AppendToFile" value="true"/>
			<!--备份文件的个数-->
			<param name="MaxFileSize" value="10240"/>
			<!--输出的日志不会覆盖以前的信息-->
			<param name="MaxSizeRollBackups" value="100"/>
			<!--当个日志文件的最大大小-->
			<param name="StaticLogFileName" value="false"/>
			<!--是否使用静态文件名-->
			<param name="DatePattern" value="yyyyMMddHH'.log'"/>
			<!--日志文件名-->
			<param name="RollingStyle" value="Date"/>
			<!--文件创建的方式,这里是以Date方式创建-->
			<!--错误日志布局-->
			<layout type="log4net.Layout.PatternLayout">
				<!--日志文本记录格式-->
				<conversionPattern value="[时间:%date]%n[线程:%t]%n[行号:%l]%n[内容:%message]%n%n"/>
			</layout>
		</appender>
	</log4net>
</configuration>

日志文本记录格式参考

<!-- 
    %M 方法名
    %m 输出代码中指定的消息 
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
    %r 输出自应用启动到输出该log信息耗费的毫秒数 
    %c 输出所属的类目,通常就是所在类的全名 
    %t 输出产生该日志事件的线程名 
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 :10:28,921
    %l 或 %L 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

    %x Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event
    %X Used to output the MDC (mapped diagnostic context) associated with the thread that generated the logging event for specified key
-->

第三步 编写帮助类

namespace Log4Net日志测试程序.CommonHelper
{
    public static class Log4NetHelper
    {
        public static ILog LogError;
        public static ILog LogWarn;
        public static ILog LogInfo;
        public static ILog LogDebug;

        static Log4NetHelper()
        {
            string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string path = Path.Combine(baseDirectory, "log4net.config");
            XmlConfigurator.ConfigureAndWatch(new FileInfo(path));
            LogError = LogManager.GetLogger("logerroe");
            LogWarn = LogManager.GetLogger("logwarn");
            LogInfo = LogManager.GetLogger("loginfo");
            LogDebug = LogManager.GetLogger("logdebug");
        }

        /// <summary>
        /// 打印错误日志
        /// </summary>
        /// <param name="obj"></param>
        public static void WriteErrorLog(object obj)
        {
            if (LogError.IsErrorEnabled)
            {
                LogError.Error(obj);
            }
        }

        /// <summary>
        /// 打印警告日志
        /// </summary>
        /// <param name="obj"></param>
        public static void WriteWarnLog(object obj)
        {
            if (LogWarn.IsWarnEnabled)
            {
                LogWarn.Warn(obj);
            }
        }

        /// <summary>
        /// 打印信息日志
        /// </summary>
        /// <param name="obj"></param>
        public static void WriteInfoLog(object obj)
        {
            if (LogInfo.IsInfoEnabled)
            {
                LogInfo.Info(obj);
            }
        }

        /// <summary>
        /// 打印调试日志
        /// </summary>
        /// <param name="obj"></param>
        public static void WriteDebugLog(object obj)
        {
            if (LogDebug.IsDebugEnabled)
            {
                LogDebug.Debug(obj);
            }
        }
    }
}

第四步 测试实例

代码

Log4NetHelper.WriteInfoLog("这是一个普通的信息");
Log4NetHelper.LogInfo.Info("这是另一个信息");

日志

[时间:2022-11-24 16:15:15,372]
[线程:1]
[行号:Log4Net日志测试程序.CommonHelper.Log4NetHelper.WriteInfoLog(F:\OneDrive\程序集\Winform\Log4Net日志测试程序\Log4Net日志测试程序\CommonHelper\Log4NetHelper.cs:32)]
[内容:这是一个普通的信息]

[时间:2022-11-24 16:15:15,426]
[线程:1]
[行号:Log4Net日志测试程序.Form1.btnInfo_Click(F:\OneDrive\程序集\Winform\Log4Net日志测试程序\Log4Net日志测试程序\Form1.cs:17)]
[内容:这是另一个信息]

总结

使用日志工具可以很方便快捷的输出想要的日志,可以将不同的信息输出到不同的日志文件,并且支持自动生成文件的功能,总之很nice

2022/11/24

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
log4net是一个强大的日志记录工具,它能够帮助开发人员有效地记录和管理应用程序的日志信息。在.NET开发log4net是一个流行的选择。 使用log4net的第一步是在应用程序引用log4net库。然后,我们需要创建log4net的配置文件。配置文件用于指定日志记录的格式、输出目标和其他配置项。 在代码,我们需要在需要记录日志的地方引用log4net的命名空间,并创建一个Logger实例。Logger可以指定记录日志的类的名称。 在代码,我们可以使用Logger的不同方法来记录日志。例如,我们可以使用Debug()方法记录调试信息,使用Info()方法记录一般信息,使用Error()方法记录错误信息等等。 我们还可以在日志记录使用占位符来动态地插入变量值。例如,我们可以使用类似于"这是一个错误:{0}"的格式,然后在记录日志时使用类似于logger.ErrorFormat("这是一个错误:{0}", errorMessage)的方法来记录错误信息。 日志记录器还可以通过配置文件指定输出目标。例如,我们可以将日志信息记录到控制台、日志文件或数据库。我们可以通过配置文件自定义日志格式,设置日志存储路径等。 最后,在应用程序结束时,我们需要调用log4net的Shutdown()方法来关闭日志记录器和释放资源。 总而言之,.NET log4net是一个功能强大且灵活的工具,能够帮助我们在应用程序记录和管理日志信息。通过合适的配置,我们可以轻松地实现日志记录的各种需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值