C#控制台程序中使用log4.net来输出日志

Apache log4net 库是一个帮助程序员将日志语句输出到各种输出目标的工具。log4net 是优秀的 Apache log4j™ 框架到 Microsoft® .NE​​T 运行时的端口。

我喜欢他可以自定义输出,区分等级等特点。

导入库

我们在工程里添加NuGet的包。输入名称log4net ,导入包。
C#控制台程序中使用log4.net来输出日志_第1张图片

创建配置文件

然后我们在项目根创建一个配置文件log4net.config


<log4net>
	
	
	
	<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
		
		<param name="Encoding" value="utf-8" />
		<file value="Log/"/>
		<appendToFile value="true" />
		<rollingStyle value="Date" />
		
		<datePattern value=""ErrorLogs_"yyyyMMdd".log"" />
		
		<StaticLogFileName value="false"/>
		
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date| %-5level %newline%message%newline--------------------------------%newline" />
		layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<levelMin value="WARN" />
			<levelMax value="FATAL" />
		filter>
	appender>
	



	
	<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
		
		<param name="Encoding" value="utf-8" />
		
		<file value="Log/"/>
		<appendToFile value="true" />
		<rollingStyle value="Date" />
		
		<StaticLogFileName value="false"/>
		
		<datePattern value=""InfoLogs_"yyyyMMdd".log"" />
		
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
		layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<levelMin value="INFO" />
			<levelMax value="INFO" />
		filter>
	appender>
	

	
	<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
		
		<param name="Encoding" value="utf-8" />
		
		<file value="Log/"/>
		<appendToFile value="true" />
		<rollingStyle value="Date" />
		
		<StaticLogFileName value="false"/>
		
		<datePattern value=""DebugLogs_"yyyyMMdd".log"" />
		
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
		layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<levelMin value="DEBUG" />
			<levelMax value="DEBUG" />
		filter>
	appender>
	
	<root>
		
		
		
		<level value="ALL" />
		
		<appender-ref ref="ErrorLog" />
		<appender-ref ref="InfoLog" />
		<appender-ref ref="DebugLog" />
	root>
log4net>

使用类

我们创建一个单独的类来使用他。

using log4net;


namespace MMCEngine
{
    internal class Loger
    {

        readonly static ILog logger = LogManager.GetLogger(" MMCEngine ");
        public Loger() {
            Thread.CurrentThread.Name = "main";//为了让主线程名显示
            string path = @"../../../log4net.config";
            FileInfo file = new FileInfo(path);


            log4net.Config.XmlConfigurator.Configure(file);
            
            Console.WriteLine("loger");
        }

        public static void Debug(string str)
        {
            Console.WriteLine(DateTime.Now.ToString("yyyy-mm-dd HH:MM:ss")+" DEBUG:" + str);
            logger.Debug(str);
        }
        public static void Info(string str)
        {
            Console.WriteLine(DateTime.Now.ToString("yyyy-mm-dd HH:MM:ss") + " INFO:" + str);
            logger.Info(str);
        }
        public static void Warn(string str)
        {
            Console.WriteLine(DateTime.Now.ToString("yyyy-mm-dd HH:MM:ss") + " WARN:" + str);
            logger.Warn(str);
        }
        public static void Error(string str)
        {
            Console.WriteLine(DateTime.Now.ToString("yyyy-mm-dd HH:MM:ss") + " ERROR:" + str);
            logger.Error(str);
        }
    }
}

使用

在Program.cs中

new Loger();
// 调用Python脚本的Test函数
Loger.Info("info1");
Loger.Info("info2");
Loger.Debug("Debug3");
Loger.Warn("Warn4");
Loger.Error("err5");

C#控制台程序中使用log4.net来输出日志_第2张图片
我们可以根据配置文件来生成不同的Log,配置文件里我分为了3个等级。

参考

https://www.cnblogs.com/netcore5/articles/14611567.html

你可能感兴趣的:(C#,c#,.net,log4net)