[Practice Note] Net项目Log4Net使用

这篇博客介绍了如何在.Net项目中集成和配置Log4Net,包括添加Nuget引用,配置Web.Config文件以设置日志等级,修改Global.asax.cs启动方法,以及创建辅助类LogHelper.cs来方便日志操作。Log4Net提供了多种Appender,如数据库、文件、控制台和邮件等,以适应不同的日志输出需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加引用

项目中添加Nuget引用:Log4net

配置Config

右键打开项目的Web.Config文件,在Configuration节点下面添加下面的内容

  <!--Log4Net配置开始-->
  <log4net>
    <root>
      <level value="ERROR" />
    </root>
    
    <logger name="logerror">
      <level value="ERROR" />
      <appender-ref ref="SysAppender" />
    </logger>
    
    <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="payAppender" />
    </logger>
    
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
    <!-- 日志文件存放位置-->
      <param name="File" value="App_Data/Log/LogError/" />
       <!-- 将日志信息追加到已有的日志文件中-->
      <param name="AppendToFile" value="true" />
      <!-- 指定按日期切分日志文件 -->
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
        <param name="ConversionPattern" value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n跟踪描述:%message%newline %n" />
        <param name="Header" value=" ----------------------header-------------------------- " />
        <param name="Footer" value=" ----------------------footer-------------------------- " />
      </layout>
    </appender>

    <appender name="payAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="App_Data/Log/LogInfo/" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
        <param name="ConversionPattern" value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n跟踪描述:%message%newline %n" />
        <param name="Header" value=" ----------------------header-------------------------- " />
        <param name="Footer" value=" ----------------------footer-------------------------- " />
      </layout>
    </appender>
  </log4net>
  <!--Log4Net配置结束-->

< level>为日志等级;由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL;比如定义级别为,则INFO级别向下的级别,比如DEBUG日志将不会被记录;如果没有定义LEVEL的值,则缺省为DEBUG

例:配置了一个logger为info级别,那么在调用下面的loginfo.info(),loginfo.Warn()都会被记录,但是loginfo.debug()就不会

< appender>为输出媒介,常用有AdoNetAppender(输出到数据库),AspNetTraceAppender(输出到ASP.NET日志),ConsoleAppender(输出到console),BufferingForwardingAppender(按信息条数输出到console),ColoredConsoleAppender/ManagedColoredConsoleAppender(根据设定颜色输出到console),EventLogAppender(输出到操作系统应用程序日志),FileAppender(输出到文件),RollingFileAppender(有回收的输出到文件),SmtpAppender(输出到邮件),RemotingAppender(远程输出)

修改Global.asax.cs的启动方法

		protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //加入代码,注册Log4
            log4net.Config.XmlConfigurator.Configure();
        }
        

增加LogHelper.cs类

namespace EVMTest.App_Start
{
    public class Log4Helper
    {
        public Log4Helper() { }
		//读取loginfo配置的日志格式
        public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
        //读取logerror配置的日志格式
        public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");

        //public static void SetConfig()
        //{
        //    log4net.Config.XmlConfigurator.Configure();
        //}
        //public static void SetConfig(FileInfo configfile)
        //{
        //    log4net.Config.XmlConfigurator.Configure(configfile);
        //}

        public static async void WriteLogAsy(string s)
        {
            await Task.Run(() =>
            {
                //Thread.Sleep(10000);
                if (loginfo.IsInfoEnabled)
                    loginfo.Info(s);
            });
        }

        public static async void WriteLogAsy(string s, Exception e)
        {
            await Task.Run(() =>
            {
                //Thread.Sleep(10000);
                if (logerror.IsErrorEnabled)
                    logerror.Error(s, e);
            });

        }


        ////////////////////////////
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值