广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C# log4net 日志输出的实现示例
  • 693
分享到

C# log4net 日志输出的实现示例

2024-04-02 19:04:59 693人浏览 独家记忆
摘要

目录第一步:安装log4net第二步:添加log4net.config配置文件第三步:添加日志配置第四步:AssemblyInfo.cs中配置 Watch = true思路: 1.安

思路:
1.安装插件:安装log4net
2.使用配置:添加log4net.config配置文件
3.输出日志文件格式:添加日志配置
4.AssemblyInfo.cs中配置

第一步:安装log4net

在这里插入图片描述

在这里插入图片描述

第二步:添加log4net.config配置文件

新增log4net.config配置文件,内容如下,与Program.cs同一目录即可。


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
	</configSections>
	<log4net>
		<!--level取值:OFF FATAL ERROR WARN INFO DEBUG ALL -->
		<logger name="loginfo">
			<level value="ALL"/>
			<appender-ref ref="InfoAppender"/>
		</logger>
		<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
			<param name="File" value="log\\"/>
			<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
			<param name="AppendToFile" value="true"/>
			<param name="MaxFileSize" value="10240"/>
			<param name="StaticLogFileName" value="false"/>
			<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;"/>
			<param name="RollingStyle" value="Date"/>
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%d [%p] - %m%n"/>
			</layout>
		</appender>
	</log4net>
</configuration>

并设置 – 属性 – 复制到输出目录为:始终复制

在这里插入图片描述

第三步:添加日志配置

在文件Program.cs应用程序主入口加入:


LogUtils.SetConfig(new FileInfo(Application.StartupPath + @"\log4net.config"));

在这里插入图片描述

LogUtils.cs 写入日志公共类


class LogUtils
{
	private static readonly ILog loginfo = LogManager.GetLogger("loginfo");

	/// <summary>
	/// 从缺省配置文件获取日志配置
	/// </summary>
	public static void SetConfig()
	{
		XmlConfigurator.Configure();
	}

	/// <summary>
	/// 从指定配置文件获取日志配置
	/// </summary>
	/// <param name="configFile">指定的配置文件</param>
	public static void SetConfig(FileInfo configFile)
	{
		XmlConfigurator.Configure(configFile);
	}

	/// <summary>
	/// 生成分类日志
	/// </summary>
	/// <param name="info">日志信息</param>
	/// <param name="dirName">保存目录名,形如d:\log\aaa</param>
	private static void WriteSortLog(string info, string dirName)
	{
		try
		{
			if (false == System.IO.Directory.Exists(dirName))
			{
				System.IO.Directory.CreateDirectory(dirName);
			}
			string path = dirName + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
			StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.Default);
			sw.WriteLine(DateTime.Now.ToString("HH:mm:ss: ") + info);
			sw.Close();
		}
		catch (Exception ex)
		{
			string expMsg = "WriteSortLog异常:" + ex.Message + Environment.NewLine + ex.StackTrace;

			if (ex.InnerException != null)
				expMsg += Environment.NewLine + "InnerException:" + ex.InnerException.Message;

			Error(expMsg, ex);
		}
	}

	/// <summary>
	/// Info级 常规日志
	/// </summary>
	/// <param name="info">日志信息</param>
	public static void Info(string info)
	{
		if (loginfo.IsInfoEnabled)
		{
			loginfo.Info(info);
		}
	}

	/// <summary>
	/// Info 先生成常规日志,然后在指定目录另外创建一份日志
	/// 主要用来需要对日志进行分类时使用
	/// </summary>
	/// <param name="info"></param>
	/// <param name="dirName"></param>
	public static void Info(string info, string dirName)
	{
		if (loginfo.IsInfoEnabled)
		{
			//生成常规日志
			loginfo.Info(info);

			//生成分类日志
			WriteSortLog(info, dirName);
		}
	}

	/// <summary>
	/// Debug级 常规日志
	/// </summary>
	/// <param name="info">日志信息</param>
	public static void Debug(string info)
	{
		if (loginfo.IsDebugEnabled)
		{
			loginfo.Debug(info);
		}
	}

	/// <summary>
	/// Debug级 异常日志
	/// </summary>
	/// <param name="info">日志信息</param>
	/// <param name="exp">异常信息</param>
	public static void Debug(string info, Exception exp)
	{
		if (loginfo.IsDebugEnabled)
		{
			loginfo.Debug(info, exp);
		}
	}

	/// <summary>
	/// Error级 常规的日志
	/// </summary>
	/// <param name="info">日志信息</param>
	public static void Error(string info)
	{
		if (loginfo.IsErrorEnabled)
		{
			loginfo.Error(info);
		}
	}

	/// <summary>
	/// Error 异常日志
	/// </summary>
	/// <param name="info">日志信息</param>
	/// <param name="exp">异常信息</param>
	public static void Error(string info, Exception exp)
	{
		if (loginfo.IsErrorEnabled)
		{
			loginfo.Error(info, exp);
		}
	}

	/// <summary>
	/// Fatal级 常规日志
	/// </summary>
	/// <param name="info">日志信息</param>
	public static void Fatal(string info)
	{
		if (loginfo.IsFatalEnabled)
		{
			loginfo.Fatal(info);
		}
	}

	/// <summary>
	/// Fatal级 异常日志
	/// </summary>
	/// <param name="info">日志信息</param>
	/// <param name="exp">异常信息</param>
	public static void Fatal(string info, Exception exp)
	{
		if (loginfo.IsFatalEnabled)
		{
			loginfo.Fatal(info, exp);
		}
	}

	/// <summary>
	/// Warn级 常规日志
	/// </summary>
	/// <param name="info">日志信息</param>
	public static void Warn(string info)
	{
		if (loginfo.IsWarnEnabled)
		{
			loginfo.Warn(info);
		}
	}

	/// <summary>
	/// Warn级 异常日志
	/// </summary>
	/// <param name="info">日志</param>
	/// <param name="exp">异常信息</param>
	public static void Warn(string info, Exception exp)
	{
		if (loginfo.IsWarnEnabled)
		{
			loginfo.Warn(info, exp);
		}
	}
}

第四步:AssemblyInfo.cs中配置 Watch = true

项目Properties文件夹下AssemblyInfo.cs中加入:


[assembly: log4net.Config.XmlConfigurator(Watch = true)]

在这里插入图片描述

最后通过


LogUtils.Error(“错误日志”);
LogUtils.Info(“正常输出日志”);
LogUtils.Warn(“温馨提示日志”);

最后启动项目:会在项目debug目录下输出日志文件夹log内

到此这篇关于C# log4net 日志输出的实现示例的文章就介绍到这了,更多相关C# log4net 日志输出内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C# log4net 日志输出的实现示例

本文链接: https://www.lsjlt.com/news/155147.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作