2010-08-31 3 views
2

У меня есть консольное приложение, использующее log4net (через Castle Windsor). Когда я отлаживаю, все протоколируется на консоль, но когда я публикую и запускаю приложение, ничего не регистрируется.log4net console app not logging on publish

У меня есть моя конфигурация log4net в отдельном файле (log4net.config). Я думаю, что это не поиск файла конфигурации, но это только предположение.

Я веб-разработчик и не развернул много консольных приложений. Я что-то упускаю? Нужно ли вручную копировать файл log4net.config в каталог exe?

Я нахожусь на VS2010.

app.config:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor"/> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/> 
    </configSections> 
    <appSettings> 
     ... 
     <add key="log4net.Internal.Debug" value="false"/> 
    </appSettings> 
    <startup>   
    <supportedRuntime version="v2.0.50727"/></startup> 
    <castle> 
     <components> 
      ... 
     </components> 
     <facilities> 
      <facility id="loggingfacility" configfile="log4net.config" loggingapi="log4net" type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging"/> 
     </facilities> 
    </castle>  
</configuration> 

log4net.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <log4net> 
     <root> 
      <!-- Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> 
      <priority value="ALL" /> 
      <appender-ref ref="ConsoleAppender" /> 
     </root> 

     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%d: [%-5p] %m%n" /> 
      </layout> 
     </appender> 

     <logger name="Castle"> 
      <level value="INFO" /> 
     </logger> 
    </log4net> 
</configuration> 

ответ

6

Это дикая догадка, но вы отметили "Build Action" вашего файла log4net.config в качестве «Контент» и установите для него свойство «Копировать в каталог вывода» в «Копировать всегда».

Таким образом, вам не нужно копировать файл, и этот файл считается «содержимым» выходного файла сборки и будет включен в вашу публикацию.

+0

Я действительно пробовал это, но до сих пор нет радости. Я только что протестировал обычную консоль.writeline, и это работает, поэтому я думаю, что это определенно проблема с конфигурацией log4net. Интересно, неправильно ли я установил уровень. Но он настроен на всех. Мое чувство кишки состоит в том, что он даже не находит конфигурационный файл ... – autonomatt

+0

Нужно ли мне устанавливать App.config в «Содержимое» и «Копировать всегда»? – autonomatt

+0

Я попробовал ваше предложение снова veljkoz ... и он работал на этот раз :) – autonomatt