pre { /*控制代码不换行*/ white-space: pre; word-wrap: normal; }

MVC3.0+Framework4.0中使用Log4net注意事项

log4net.dll是日志记录插件,官方最新版本是1.2.10,支持的是Framework2.0,运用到.net4.0上是没有任何作用的,需要修改下源代码,才能起作用。

 

首先到log4net官网下载源码http://logging.apache.org/log4net/download.html

下载后,用vs打开src里面的源码,将log4net类库的目标框架选择为4.0,在生成选项卡里将条件编译符号改成:NET;NET_2_0;NET_4_0

生成路径修改成..\build\bin\net\4.0\debug\

再打开log4net类库的AssemblyInfo.cs文件,找到:[assembly: System.Security.AllowPartiallyTrustedCallers]

注释掉,或者修改为:[assembly:SecurityRules(SecurityRuleSet.Level1)]


下一步,打开log4net类库的Config\XMLConfigurator.cs文件,修改settings.ProhibitDtd = false; 为settings.DtdProcessing = DtdProcessing.Parse;



OK编译,成功,拷贝log4net到我们的mvc3.0 razor项目中,加入引用。
 

在MVC3.0最外面的Web.config中加入如下配置:(在根节点configuration里面加入如下代码)

 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
  </configSections>
  <log4net debug="true">
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="Logs\log.txt" />
      <param name="datePattern" value="MM-dd HH:mm" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>
    <appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Logs/Log.txt" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="10" />
      <param name="MaximumFileSize" value="5000K" />
      <param name="RollingStyle" value="Size" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>

  </log4net>

以上代码是log日志的配置,可以自己进一步修改

最后,我们在Global里面加入log4net.Config.XmlConfigurator.Configure();即可完成:

protected void Application_Start()
        {
            log4net.Config.XmlConfigurator.Configure();//这句代码
            AreaRegistration.RegisterAllAreas();
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

好了,这样整个log4net就可以安安稳稳的运行在MVC3.0+Framework4里面了。

在需要的地方加入使用(就跟2.0一样了):

 public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

posted @ 2011-09-26 21:06  monkey's  阅读(388)  评论(0)    收藏  举报