log4net - несколько экземпляров - один в global.asax, а другой в самом приложении .net - PullRequest
0 голосов
/ 20 июня 2019

Я изменил global.asax для пользователя log4net, чтобы регистрировать все запросы и ответы на базовый веб-сервис.

Веб-служба также использует log4net, и эти два экземпляра не работают независимо друг от друга.

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

Можно ли запустить два совершенно разных экземпляра log4net, один в global.asax.cs?

1 Ответ

3 голосов
/ 20 июня 2019

Вы можете настроить эту обязательную настройку в одном файле конфигурации.
Просто используйте выделенные logger экземпляры, каждый из которых имеет свои appender экземпляры, которые выводятся в отдельное местоположение.

В вашем веб-сервисе используйте регистратор с именем eg.WebServiceLogger.

log4net.ILog logger = LogManager.GetLogger("WebServiceLogger");`

Настройте этот регистратор на использование приложения с именем eg.WebServiceAppender
и предоставить ему собственный выходной файл, например.c:\logs\webservice.log.
Настройка additivity=false гарантирует, что этот регистратор не будет использовать никаких унаследованных стандартных / корневых приложений.

<logger name="WebServiceLogger" additivity="false">        
    <level value="ALL" />
    <appender-ref ref="WebServiceAppender" />
</logger>

<appender name="WebServiceAppender" type="log4net.Appender.RollingFileAppender">
    <file value="c:\logs\webservice.log" />
    <!-- other settings go here -->
</appender>

Аналогичным образом настройте Global.asax .

log4net.ILog logger = LogManager.GetLogger("GlobalAsaxLogger");

<logger name="GlobalAsaxLogger" additivity="false">        
    <level value="ALL" />
    <appender-ref ref="GlobalAsaxAppender" />
</logger>

<appender name="GlobalAsaxAppender" type="log4net.Appender.RollingFileAppender">
    <file value="c:\logs\globalasax.log" />
    <!-- other settings go here -->
</appender>

Любые другие заявленные регистраторы будут использовать регистратор root, здесь он пишет аппендеру с именем GeneralAppender.


Полная конфигурация:

<log4net>
    <logger name="WebServiceLogger" additivity="false">        
        <level value="ALL" />
        <appender-ref ref="WebServiceAppender" />
    </logger>

    <appender name="WebServiceAppender" type="log4net.Appender.RollingFileAppender">
        <file value="c:\logs\webservice.log" />
        <!-- other settings go here -->
    </appender>

    <logger name="GlobalAsaxLogger" additivity="false">        
        <level value="ALL" />
        <appender-ref ref="GlobalAsaxAppender" />
    </logger>

    <appender name="GlobalAsaxAppender" type="log4net.Appender.RollingFileAppender">
        <file value="c:\logs\webservice.log" />
        <!-- other settings go here -->
    </appender>

    <appender name="GeneralAppender" type="log4net.Appender.RollingFileAppender">
        <file value="c:\logs\general.log" />
        <!-- other settings go here -->
    </appender>

    <root>                
        <level value="ALL" />
        <appender-ref ref="GeneralAppender" />
    </root>
</log4net>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...