如何为ASP.NETMVC 3项目配置log4net?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

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

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

其次,如果我在我的项目中有一个文件夹,我该LOG如何设置配置,以便不使用我的应用程序的物理文件夹?

例如,而不是:

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

用过的

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

要么

<file value="%some_variable%\LOG\Log.log" /> 
提问于
用户回答回答于

文件很简单:

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

所以你需要的是完整的路径C:\physicalpath\LOG\Log.log或相关的路径,这需要像 .一样开始.\App_Data\Log4Net.Logs

也可以在属性中使用文件夹名称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个文件Appender 的完整配置<root>指定只有文件appender在使用中:

  <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();

}

扫码关注云+社区