我在同一目录中有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的控制台输出,看起来它正在拾取配置而没有任何问题。但仍然是一个空的日志。我不知道是否需要添加同花顺或其他东西。
答案 0 :(得分:0)
您是否对两个模块使用相同的log4net配置? 如果没有,它们在运行时是否真的不同?
我认为“default”应该返回Root-logger,而“VSDemonLogger”则返回另一个,但是那个没有包含在你发布的配置中。
编辑: 配置中的AFAIK所有记录器将被“创建”,即使您不使用它们,也会为VSDemonLogger和VScanDemonStarter生成生成的日志文件。
您在配置中使用了相对路径,如果从VScanDemonStarter调用它们,它们是否仍然对VSDemonLogger有效?