консольное приложение log4net не входит в систему при публикации - PullRequest
3 голосов
/ 31 августа 2010

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

Моя конфигурация 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>

1 Ответ

7 голосов
/ 31 августа 2010

Это неверное предположение, но вы пометили «Build Action» вашего файла log4net.config как «Content» и задали для его свойства «Copy to Output directory» значение «Copy Always».

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

...