c# - log4net - 跟踪日志记录配置问题

标签 c# com log4net log4net-configuration component-services

我有一个 COM 可见的 .NET 对象,并安装在组件服务应用程序中,以使其对某些遗留代码可见。

组件服务应用程序配置有应用程序根目录。

在应用程序根目录中,我有一个 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] 

像泥一样清澈:)

所以我看不到任何其他内容来检查为什么我没有从我的对象中注销。

目前我在任何地方都找不到更好的故障排除信息。

有什么想法吗?

谢谢

最佳答案

我想你已经这么做了,但只是为了确定一下。您也运行过这个命令吗?

 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>

关于c# - log4net - 跟踪日志记录配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21902772/

相关文章:

c# - log4net,单独的进程,单独的 RollingFileAppenders

asp.net - Log4net 没有记录任何内容

java - 从 Java 类调用 C# 类

c# - 函数的 "static new"修饰符有什么意义?

c# - 在 StreamingAssetsPath 上读取和写入文件

c++ - COM 指针和进程终止

c# - 为什么从 C# 调用 C++ COM 函数总是在主线程中执行?

c++ - 每个新的 COM 类都必须重新实现 IUnknown 接口(interface)吗?

c# - 如何使用 C# xaml 以编程方式设置数据绑定(bind)

c# - 设置 Log4Net 以记录类库的输出