为asp.net MVC3项目配置log4net

本文关键字:配置 log4net 项目 MVC3 asp net | 更新日期: 2023-09-27 18:20:04

好的,所以我知道如何在我的应用程序中配置log4Net,但现在

首先如果应用程序是发布或调试,我想通过差异日志级别来改进配置,我该怎么做?。

第二,如果我的项目中有一个名为LOG的文件夹,我如何将配置设置为不使用我的应用程序的物理文件夹??

例如代替:

<file value="C:'physicalpath'LOG'Log.log" /> 

使用

<file value="'LOG'Log.log" /> 

<file value="%some_variable%'LOG'Log.log" /> 

为asp.net MVC3项目配置log4net

文档是直接的:

file:日志文件的完整路径或相对路径。

因此,您只需要像C:'physicalpath'LOG'Log.log或相关路径这样的完整路径,这需要从像.'App_Data'Log4Net.Logs 这样的dot-char.开始

也可以在file属性中使用文件夹名,然后必须使用datePattern属性来指定文件名,例如:

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
  <file value=".''App_Data''Log4Net.Logs''backend"/>
  <datePattern value=".yyyy-MM-dd'.log'"/>
  <appendToFile value="true"/>
  <maximumFileSize value="256KB"/>
  <maxSizeRollBackups value="2"/>
  <rollingStyle value="Date"/>
  <staticLogFileName value="false"/>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%level %thread %logger - %message%newline"/>
  </layout>
</appender>

还记得添加

<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>

因此,您可以避免log4net锁定文件,并且不能使用它来附加消息。

如果你不习惯log4net,别忘了添加<root>节点,这是让log4net知道你想使用什么的节点,而不是<appender>节点,例如,你可以有10个<appender>节点,只使用一个,然后<root>节点只配置你想使用的节点。。。


这是一个完整配置,有2个Mongo Appender和1个File Appender,<root>指定只使用文件附加程序:

  <log4net>
    <appender name="MongoAppender" type="log4net.Appender.MongoDBAppender, log4mongo-net">
      <!-- MongoDB 1 connection options -->
      <host value="staff.mongohq.com"/>
      <port value="10077"/>
      <databaseName value="myApp_2011"/>
      <collectionName value="logs_net"/>
      <userName value="myself"/>
      <password value="123456"/>
    </appender>
    <appender name="MongoAppenderAppHarbor" type="log4net.Appender.MongoDBAppender, log4mongo-net">
      <!-- MongoDB 2 connection options -->
      <host value="staff.mongohq.com"/>
      <port value="10048"/>
      <databaseName value="d1741d63-46b1-4a44-9c49-8c28cecae36b"/>
      <collectionName value="logs_net"/>
      <userName value="myself"/>
      <password value="123456"/>
    </appender>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
      <!-- Local file options -->
      <file value=".''App_Data''Log4Net.Logs''backend"/>
      <datePattern value=".yyyy-MM-dd'.log'"/>
      <appendToFile value="true"/>
      <maximumFileSize value="256KB"/>
      <maxSizeRollBackups value="2"/>
      <rollingStyle value="Date"/>
      <staticLogFileName value="false"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %thread %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <!--
         <level value="DEBUG" />
         <appender-ref ref="MongoAppender" />
         <appender-ref ref="MongoAppenderAppHarbor" />
      -->
      <appender-ref ref="FileAppender"/>
    </root>
  </log4net>

请记住,也许您应该在Global.asax.cs中添加以下代码:

protected void Application_Start()
{
    log4net.Config.XmlConfigurator.Configure();
    //...more code
}

下面是一个示例app.config部分,其中Path是通过<file value="somepath"/>标记定义的。

这个链接是一个很好的文档资源

<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
   <file value="C:''SOMEPATH''SOMELOG.log"/>
   <appendToFile value="true"/>
   <rollingStyle value="Size"/>
   <maxSizeRollBackups value="10"/>
   <maximumFileSize value="10MB"/>
   <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%date [%thread] %-5level %logger – %message%exception%newline"/>
   </layout>    
 </appender>
 <root>
   <level value="ALL"/>
   <appender-ref ref="RollingFileAppender"/>
 </root>      
</log4net>