log4net - отслеживание проблем с настройкой регистрации

У меня есть объект.NET, который виден COM и установлен в приложении служб компонентов, чтобы сделать его видимым для некоторого устаревшего кода.

Приложение служб компонентов настроено с корневым каталогом приложения.

В корневом каталоге приложения у меня есть файл application.config.

В файле application.config у меня есть

<log4net>
    <appender name="file" type="log4net.Appender.RollingFileAppender">
      <file value="C:\application\Logs\legacycomponents.log" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{log4net:HostName} %date [%thread] %-5level %logger - %message%newline" />
      </layout>
      <rollingStyle value="Date" />
      <maxSizeRollBackups value="7" />
      <datePattern value="yyyyMMdd" />
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="file" />
    </root>
  </log4net>

Мой код включает в себя:

    /// <summary>
    /// Gets the Log4Net Logging component
    /// </summary>
    protected ILog Logger
    {
        get
        {
            return LogManager.GetLogger(this.GetType());
        }
    }

Затем я очень многословно регистрируюсь на разных уровнях моего кода.

И это ничего не регистрирует.

Я включил внутреннюю отладку log4net:

<configuration>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
</configuration>

И отслеживается с помощью debugview, который показывает, что log4net что-то сделал:

[3064] log4net: DefaultRepositorySelector: Creating repository for assembly [Legacy.Component, Version=6.1.0.0, Culture=neutral, PublicKeyToken=1916d4122ec2e2e8] 
[3064] log4net: DefaultRepositorySelector: Assembly [Legacy.Component=6.1.0.0, Culture=neutral, PublicKeyToken=1916d4122ec2e2e8] Loaded From [C:\product\ASP\bin\legacy.component.dll] 
[3064] log4net: DefaultRepositorySelector: Assembly [Legacy.Component, Version=6.1.0.0, Culture=neutral, PublicKeyToken=1916d4122ec2e2e8] does not have a RepositoryAttribute specified. 
[3064] log4net: DefaultRepositorySelector: Assembly [Legacy.Component=6.1.0.0, Culture=neutral, PublicKeyToken=1916d4122ec2e2e8] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] 
[3064] log4net: DefaultRepositorySelector: repository [log4net-default-repository] already exists, using repository type [log4net.Repository.Hierarchy.Hierarchy] 

Что так же ясно, как грязь:)

Так что я не вижу ничего другого, чтобы проверить, почему я не получаю никакого выхода из моего объекта.

В настоящее время я не могу найти более подробную информацию по устранению неполадок.

Есть идеи?

Спасибо

1 ответ

Решение

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

 log4net.Config.XmlConfigurator.Configure();

Эта команда загружает вашу конфигурацию log4net, без которой это не может быть сделано.

Также я включаю опцию отладки следующим образом:

<log4net debug="true">
    <appender name="rollingFile" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="Logs\log.txt"/>
        <param name="AppendToFile" value="true"/>
        <param name="RollingStyle" value="Date"/>
        <param name="DatePattern" value="yyyy.MM.dd"/>
        <param name="StaticLogFileName" value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
        </layout>
    </appender>
    <root>
        <level value="INFO"/>
        <appender-ref ref="rollingFile"/>
    </root>
</log4net>
Другие вопросы по тегам