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;
        }

 

posted @ 2024-08-07 15:09  中国结  阅读(38)  评论(0编辑  收藏  举报