1.配置文件
app.config
<?xml version="1.0" encoding="utf-8" ?><configuration> ?<startup> ???<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> ?</startup> ?<appSettings> ???<!--log4net日志配置路径--> ???<add key="log4net" value="log4net.config"/> ???<!--日志是否开启 0不开启 1开启--> ???<add key="IsWriteLog" value="1"/> ?</appSettings></configuration>
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="ERROR" /> ?????<appender-ref ref="ErrorAppender" /> ???</logger> ???<logger name="loginfo"> ?????<level value="INFO" /> ?????<appender-ref ref="InfoAppender" /> ???</logger> ???<logger name="logdebug"> ?????<level value="DUBUG"></level> ?????<appender-ref ref="DebugAppender" /> ???</logger> ???<logger name="logfatal"> ?????<level value="Fatal"></level> ?????<appender-ref ref="FatalAppender" /> ???</logger> ???<logger name="logwarn"> ?????<level value="WARN"></level> ?????<appender-ref ref="WarnAppender" /> ???</logger> ???<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> ?????<!--设置日志存储路径--> ?????<param name="File" value="Data//WebLog//LogError//" /> ?????<!--是否追加到文件--> ?????<param name="AppendToFile" value="true" /> ?????<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> ?????<param name="MaxSizeRollBackups" value="100" /> ?????<param name="MaxFileSize" value="1024" /> ?????<!--是否只写到一个文件中--> ?????<param name="StaticLogFileName" value="false" /> ?????<!--这是按日期产生文件夹,并在文件名前也加上日期--> ?????<param name="DatePattern" value="yyyyMM/dd".log"" /> ?????<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> ?????<param name="RollingStyle" value="Date" /> ?????<layout type="log4net.Layout.PatternLayout"> ???????<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " /> ?????</layout> ???</appender> ???<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> ?????<!--设置日志存储路径--> ?????<param name="File" value="Data//WebLog//LogInfo//" /> ?????<!--是否追加到文件--> ?????<param name="AppendToFile" value="true" /> ?????<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> ?????<param name="MaxSizeRollBackups" value="100" /> ?????<param name="MaxFileSize" value="1024" /> ?????<!--是否只写到一个文件中--> ?????<param name="StaticLogFileName" value="false" /> ?????<!--这是按日期产生文件夹,并在文件名前也加上日期--> ?????<param name="DatePattern" value="yyyyMM/dd".log"" /> ?????<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> ?????<param name="RollingStyle" value="Date" /> ?????<layout type="log4net.Layout.PatternLayout"> ???????<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n消息描述:%c [%x] %n%m %n " /> ?????</layout> ???</appender> ???<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> ?????<!--设置日志存储路径--> ?????<param name="File" value="Data//WebLog//LogDebug//" /> ?????<!--是否追加到文件--> ?????<param name="AppendToFile" value="true" /> ?????<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> ?????<param name="MaxSizeRollBackups" value="100" /> ?????<param name="MaxFileSize" value="1024" /> ?????<!--是否只写到一个文件中--> ?????<param name="StaticLogFileName" value="false" /> ?????<!--这是按日期产生文件夹,并在文件名前也加上日期--> ?????<param name="DatePattern" value="yyyyMM/dd".log"" /> ?????<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> ?????<param name="RollingStyle" value="Date" /> ?????<layout type="log4net.Layout.PatternLayout"> ???????<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " /> ?????</layout> ???</appender> ???<appender name="FatalAppender" type="log4net.Appender.RollingFileAppender"> ?????<!--设置日志存储路径--> ?????<param name="File" value="Data//WebLog//LogFatal//" /> ?????<!--是否追加到文件--> ?????<param name="AppendToFile" value="true" /> ?????<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> ?????<param name="MaxSizeRollBackups" value="100" /> ?????<param name="MaxFileSize" value="1024" /> ?????<!--是否只写到一个文件中--> ?????<param name="StaticLogFileName" value="false" /> ?????<!--这是按日期产生文件夹,并在文件名前也加上日期--> ?????<param name="DatePattern" value="yyyyMM/dd".log"" /> ?????<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> ?????<param name="RollingStyle" value="Date" /> ?????<layout type="log4net.Layout.PatternLayout"> ???????<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " /> ?????</layout> ???</appender> ???<appender name="WarnAppender" type="log4net.Appender.RollingFileAppender"> ?????<!--设置日志存储路径--> ?????<param name="File" value="Data//WebLog//LogWarn//" /> ?????<!--是否追加到文件--> ?????<param name="AppendToFile" value="true" /> ?????<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> ?????<param name="MaxSizeRollBackups" value="100" /> ?????<param name="MaxFileSize" value="1024" /> ?????<!--是否只写到一个文件中--> ?????<param name="StaticLogFileName" value="false" /> ?????<!--这是按日期产生文件夹,并在文件名前也加上日期--> ?????<param name="DatePattern" value="yyyyMM/dd".log"" /> ?????<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> ?????<param name="RollingStyle" value="Date" /> ?????<layout type="log4net.Layout.PatternLayout"> ???????<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " /> ?????</layout> ???</appender> ?</log4net></configuration>
2.Helper调用类
using System;using log4net;namespace LogService{ ???/// <summary> ?????/// LogHelper的摘要说明。 ??????/// </summary> ??????public class LogHelper ???{ ???????/// <summary> ???????/// 静态只读实体对象info信息 ???????/// </summary> ???????public static readonly ILog Loginfo = LogManager.GetLogger("loginfo"); ???????/// <summary> ???????/// ?静态只读实体对象error信息 ???????/// </summary> ???????public static readonly ILog Logerror = LogManager.GetLogger("logerror"); ???????/// <summary> ???????/// ?静态只读实体对象debug信息 ???????/// </summary> ???????public static readonly ILog LogDebug = LogManager.GetLogger("logdebug"); ???????/// <summary> ???????/// ?静态只读实体对象fatal信息 ???????/// </summary> ???????public static readonly ILog LogFatal = LogManager.GetLogger("logfatal"); ???????/// <summary> ???????/// ?静态只读实体对象warn信息 ???????/// </summary> ???????public static readonly ILog LogWarn = LogManager.GetLogger("logwarn"); ???????/// <summary> ???????/// ?添加info信息 ???????/// </summary> ???????/// <param name="info">自定义日志内容说明</param> ???????public static void WriteInfo(object info) ???????{ ???????????try ???????????{ ???????????????if (Loginfo.IsInfoEnabled) ???????????????{ ???????????????????Loginfo.Info(info); ???????????????} ???????????} ???????????catch { } ???????} ???????/// <summary> ???????/// 添加异常信息 ???????/// </summary> ???????/// <param name="info">自定义日志内容说明</param> ???????/// <param name="ex">异常信息</param> ???????public static void WriteError(string info, Exception ex) ???????{ ???????????try ???????????{ ???????????????if (Logerror.IsDebugEnabled) ???????????????{ ???????????????????Logerror.Error(info, ex); ???????????????} ???????????} ???????????catch { } ???????} ???????/// <summary> ???????/// 添加Debug信息 ???????/// </summary> ???????/// <param name="info">自定义日志内容说明</param> ???????/// <param name="ex">异常信息</param> ???????public static void WriteDebug(string info, Exception ex) ???????{ ???????????try ???????????{ ???????????????if (LogDebug.IsDebugEnabled) ???????????????{ ???????????????????LogDebug.Debug(info, ex); ???????????????} ???????????} ???????????catch { } ???????} ???????/// <summary> ???????/// 添加fatal信息 ???????/// </summary> ???????/// <param name="fatal">自定义日志内容说明</param> ???????public static void WriteFatal(object fatal) ???????{ ???????????try ???????????{ ???????????????if (LogFatal.IsFatalEnabled) ???????????????{ ???????????????????LogFatal.Fatal(fatal); ???????????????} ???????????} ???????????catch { } ???????} ???????/// <summary> ???????/// 添加warn信息 ???????/// </summary> ???????/// <param name="warn">自定义日志内容说明</param> ???????public static void WriteWarn(object warn) ???????{ ???????????try ???????????{ ???????????????if (LogWarn.IsWarnEnabled) ???????????????{ ???????????????????LogWarn.Warn(warn); ???????????????} ???????????} ???????????catch { } ???????} ???}}
3.测试代码
using System;using System.Configuration;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using log4net.Config;namespace LogService{ ???class Program ???{ ???????static void Main(string[] args) ???????{ ???????????//初始化日志文件 ????????????string state = ConfigurationManager.AppSettings["IsWriteLog"]; ???????????//判断是否开启日志记录 ???????????if (state == "1") ???????????{ ???????????????var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + ConfigurationManager.AppSettings["log4net"]; ???????????????var fi = new FileInfo(path); ???????????????XmlConfigurator.Configure(fi); ???????????} ???????????try ???????????{ ???????????????var x = 0; ???????????????var q = 1 / x; ???????????} ???????????catch (Exception e) ???????????{ ???????????????LogHelper.WriteError("xx", e); ???????????????LogHelper.WriteDebug("xx", e); ???????????} ???????????LogHelper.WriteInfo("info"); ???????????LogHelper.WriteFatal("fatal"); ???????????LogHelper.WriteWarn("warn"); ???????????Console.WriteLine(); ???????????Console.ReadLine(); ???????} ???}}
github地址:https://github.com/842549829/log4net
log4net配置使用
原文地址:https://www.cnblogs.com/liuxiaoji/p/9288148.html