c# net6 日志管理log4net的用法
如图:
一、program.cs
// 配置 log4net XmlConfigurator.Configure(new FileInfo("log4net.config"));
二、公共类 LogHelper.cs
using log4net;
namespace ElecInvoice.Common { public class LogHelper { public static readonly ILog loginfo = LogManager.GetLogger("loginfo");//这里的 loginfo 和 log4net.config 里的名字要一样 public static readonly ILog logdebug = LogManager.GetLogger("logdebug");//这里的 logdebug 和 log4net.config 里的名字要一样 public static readonly ILog logerror = LogManager.GetLogger("logerror");//这里的 logerror 和 log4net.config 里的名字要一样 public static void Log(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info($"{DateTime.Now} {info}"); } } public static void Screen(string info) { if (logdebug.IsDebugEnabled) { logdebug.Debug($"{DateTime.Now} {info}"); } } public static void Log(string info, Exception ex) { if (logerror.IsErrorEnabled) { logerror.Error($"{DateTime.Now} {info}", ex); } } } }
三、配置文件 log4net.config
通过修改:<level value="ERROR" />的value值,控制日志是否输出;修改后要重启项目
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- Level的级别,由高到低 --> <!-- OFF > Fatal > ERROR > WARN > DEBUG > INFO > ALL--> <!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中--> <log4net> <!--错误日志类--> <logger name="logerror"> <!--日志类的名字--> <level value="ERROR" /> <!--定义记录的日志级别--> <appender-ref ref="ErrorAppender" /> <!--记录到哪个介质中去--> </logger> <!--调试日志类--> <logger name="logdebug"> <!--日志类的名字--> <level value="OFF" /> <!--定义记录的日志级别--> <appender-ref ref="DebugAppender" /> <!--记录到哪个介质中去--> </logger> <!--信息日志类--> <logger name="loginfo"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> </logger> <!--调试日志附加介质--> <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质--> <param name="File" value="Log\\" /> <!--日志输出到exe程序这个相对目录下--> <param name="AppendToFile" value="true" /> <!--输出的日志不会覆盖以前的信息--> <param name="MaxSizeRollBackups" value="100" /> <!--备份文件的个数--> <param name="maximumFileSize" value="20MB" /> <!--当个日志文件的最大大小--> <param name="StaticLogFileName" value="false" /> <!--是否使用静态文件名--> <param name="DatePattern" value="'Scr'yyyyMMdd'.txt'" /> <!--日志文件名--> <param name="RollingStyle" value="Date" /> <!--文件创建的方式,这里是以Date方式创建--> <!--调试日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%m" /> </layout> </appender> <!--错误日志附加介质--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质--> <param name="File" value="Log\\" /> <!--日志输出到exe程序这个相对目录下--> <param name="AppendToFile" value="true" /> <!--输出的日志不会覆盖以前的信息--> <param name="MaxSizeRollBackups" value="100" /> <!--备份文件的个数--> <param name="maximumFileSize" value="20MB" /> <!--当个日志文件的最大大小--> <param name="StaticLogFileName" value="false" /> <!--是否使用静态文件名--> <param name="DatePattern" value="'Err'yyyyMMdd'.txt'" /> <!--日志文件名--> <param name="RollingStyle" value="Date" /> <!--文件创建的方式,这里是以Date方式创建--> <!--错误日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d %m %n" /> </layout> </appender> <!--信息日志附加介质--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\" /> <param name="AppendToFile" value="true" /> <param name="maximumFileSize" value="20MB" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="'Log'yyyyMMdd'.txt'" /> <param name="RollingStyle" value="Composite" /> <!--信息日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%m %n" /> </layout> </appender> </log4net> </configuration>
四、用法
public GetResult GetInvoice([FromBody] GetInvoice param) { LogHelper.Log("发票查询请求参数:"+JsonConvert.SerializeObject(param)); string res = Utils.MyPost<GetInvoice>(Pub.URL_GETINVOICE, param); LogHelper.Log("发票查询返回参数:"+res); GetResult obj =new GetResult(); if (!string.IsNullOrEmpty(res)) { obj = JsonConvert.DeserializeObject<GetResult>(res); } return obj; }