Настройте log4net для проекта asp.net MVC3 - PullRequest
16 голосов
/ 12 января 2012

Хорошо, так что я понял, как настроить log4Net в моем приложении, но теперь

Первый Я хочу улучшить конфигурацию, дифференцируя уровень журналов, еслиприложение это релиз или отладка, как я могу это сделать?

Секунда , Если в моем проекте была папка с именем LOG, как я могу настроить конфигурацию, чтобы не использовать физическую папку моего приложения ??

например Вместо:

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

используется

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

или

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

Ответы [ 3 ]

22 голосов
/ 12 января 2012

Документация проста:

файл : полный или относительный путь к файлу журнала.

Так что все, что вам нужноИмеется полный путь, например C:\physicalpath\LOG\Log.log или относительный, он должен начинаться с точечного символа ., например .\App_Data\Log4Net.Logs

, вы также можете использовать папку name в атрибуте 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> конфигурируется только с тем, который вы хотите использовать ...


здесь полная конфигурация с двумя монго-аппендерами и1 File Appender, <root> указывает, что используется только file 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>
4 голосов
/ 01 июня 2012

Помните, может быть, вам следует добавить в Global.asax.cs следующий код:

protected void Application_Start()
{
    log4net.Config.XmlConfigurator.Configure();
    //...more code
}
0 голосов
/ 12 января 2012

Ниже приведен пример раздела app.config, путь которого определяется с помощью тега <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...