MVC5中使用Log4Net

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC5中使用Log4Net相关的知识,希望对你有一定的参考价值。

最早搜到的是这篇:

 

http://www.codeproject.com/Articles/823247/How-to-use-Apache-log-net-library-with-ASP-NET-MVC

百度的话,到处是这篇文章的翻译,转载来转载去的,真没意义

 

但是这里面描述的配置太麻烦了,而且实际项目更可能的是类似这样一个目录:

技术分享

更合理的应该是只要在Tool中添加log4net的引用,再封装一个帮助类供外调用即可

试了一下,这样做就可以了:

 

1.添加引用

这个不用解释了吧

 

2.添加一个配置文件:

技术分享

内容如下:

<log4net>
  <logger name="logerror">
    <level value="ALL" />
    <appender-ref ref="ErrorAppender" />
  </logger>
  <logger name="loginfo">
    <level value="ALL" />
    <appender-ref ref="InfoAppender" />
  </logger>
  <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="Log\\\\LogError\\\\" />
    <param name="AppendToFile" value="true" />
    <param name="MaxSizeRollBackups" value="100" />
    <param name="MaxFileSize" value="10240" />
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />
    <param name="RollingStyle" value="Date" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      <!--<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n "  />-->
    </layout>
  </appender>
  <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="Log\\\\LogInfo\\\\" />
    <param name="AppendToFile" value="true" />
    <param name="MaxFileSize" value="10240" />
    <param name="MaxSizeRollBackups" value="100" />
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />
    <param name="RollingStyle" value="Date" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      <!--<param name="ConversionPattern" value="&lt;HR COLOR=gray&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n "  />-->
    </layout>
  </appender>
</log4net>

ConversionPattern是控制输出内容,如果想要日志输出html文件,

取消注释掉的ConversionPattern,反将其上面一个ConversionPattern注释掉

再将DatePattern中的.log改成.htm

 

3.创建帮助类

技术分享

代码如下:

public static class LogHelper
    {
        private static log4net.ILog _loginfo;
        private static log4net.ILog _logerror;
        private static bool _config = false;

        public static void Config()
        {
            if (_config) return;

            var tmp = System.Reflection.Assembly.GetExecutingAssembly().Location;
            var codeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
            codeBase = codeBase.Substring(8, codeBase.LastIndexOf("/") - 8 + 1);
            string file = codeBase + "log4net.config";
            using (var fs = File.Open(file, FileMode.Open))
                log4net.Config.XmlConfigurator.Configure(fs);
            _loginfo = log4net.LogManager.GetLogger("loginfo");
            _logerror = log4net.LogManager.GetLogger("logerror");
            _config = true;
        }

        public static void Debug(object info)
        {
            _loginfo.Debug(info);
        }

        public static void Info(object info)
        {
            _loginfo.Info(info);
        }

        public static void Error(Exception ex)
        {
            _logerror.Error(ex.Message, ex);
        }
    }

 

4.Web配置

在Global.asax中添加一行代码:

技术分享

 

5.结果

再次运行代码,你就能看到Log目录在网站根目录下生成了。

以上是关于MVC5中使用Log4Net的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC5实现芒果分销后台管理系统:系统结构设计,集成AutoMapper,Log4net

Log4net 可以在新创建的 AppDomain 中运行吗

未能加载文件或程序集

您可以在代码中配置 log4net 而不是使用配置文件吗?

如何使用log4net

多线程代码执行的 Log4Net C# 日志记录问题