Vb.net Visual Studio 2008 log4net多个模块,同样的app.config不同的记录器,不行

时间:2009-08-20 20:28:01

标签: vb.net visual-studio-2008 log4net

我在同一目录中有2个控制台应用程序项目,但项目不同。 App_Code目录中有一些常用代码和一个常见的app.config,它可以构建成单独的.exe.config文件。

一个模块(VScanDemonStarter)启动并写入一个记录器,其自己的appender转到一个单独的文件。它使用process.start()在另一个命令提示符隐藏窗口中执行另一个模块(VScanDemon)。

当我自己运行VScanDemon时,它会将条目放入其日志文件中。当我运行VScanDemonStarter时,它将条目放入其(不同的)日志文件中,创建VScanDemon日志文件,但没有条目。我可以看到它正在执行,因为一些文件从一个目录移动到另一个目录。只是没有日志条目。

配置看起来像

                                               

<root>
  <level value="INFO" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
  <param name="File" value="log/vscandemonstarter.log" />
  <param name="AppendToFile" value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" />
  </layout>
</appender>
<appender name="vsdemonlogfileappender" type="log4net.Appender.RollingFileAppender" >
  <param name="File" value="log/vscandemon.log" />
  <param name="AppendToFile" value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" />
  </layout>
</appender>

并设置代码主体并使用。

调用主体

VScanDemonStarter:

模块顶部:

Private ReadOnly log As ILog = log4net.LogManager.GetLogger("default")

主要的顶部:

    log4net.Config.XmlConfigurator.Configure()

示例调用:

    If log.IsInfoEnabled Then log.Info("VScanDemonStarter:Main: ----called----")

VBScanDemon:

模块顶部:

Private ReadOnly log As ILog = log4net.LogManager.GetLogger("VSDemonLogger")

主要的顶部:

    log4net.Config.XmlConfigurator.Configure()

VBScanDemon:

    If log.IsInfoEnabled Then log.Info("VScanDemon:Main: ----called----")

我没有从VScanDemon获取任何日志条目。


抱歉遗漏了配置的顶部

 <log4net debug="true">  
    <logger name="default">  
      <level value="INFO"/>  
      <appender-ref ref="LogFileAppender" />  
    </logger>  
    <logger name="VSDemonLogger">  
      <level value="INFO"/>  
      <appender-ref ref="vsdemonlogfileappender" />  
    </logger>

我有一个app.config,但在同一目录下有两个项目使用它。它们从一个源.exe.config

生成单独的配置

我查看了VScanDemon的控制台输出,看起来它正在拾取配置而没有任何问题。但仍然是一个空的日志。我不知道是否需要添加同花顺或其他东西。

1 个答案:

答案 0 :(得分:0)

您是否对两个模块使用相同的log4net配置? 如果没有,它们在运行时是否真的不同?

我认为“default”应该返回Root-logger,而“VSDemonLogger”则返回另一个,但是那个没有包含在你发布的配置中。

编辑: 配置中的AFAIK所有记录器将被“创建”,即使您不使用它们,也会为VSDemonLogger和VScanDemonStarter生成生成的日志文件。

您在配置中使用了相对路径,如果从VScanDemonStarter调用它们,它们是否仍然对VSDemonLogger有效?