在RollingFileAppender中使用动态文件目录的log4net中的问题

Ran*_*ith 3 null log4net filenames dynamic rollingfileappender

我的配置文件中有3个appender用于创建3种不同类型的日志.我通过设置全局上下文属性在3个appender中的每个中使用动态命名文件.在某些情况下,我需要为1个appender动态设置日志文件名.
当我只为1个appender设置文件名时,它会创建另一个名为"null"的文件,除了名称已动态设置的实际日志文件外,没有任何数据.我已经创建了配置文件,如图所示.

<appender name="RollingFileAppenderV1" type="log4net.Appender.RollingFileAppender">   
<file type="log4net.Util.PatternString" value="Logs\%property{applog}" /> 
.
.
.
<appender name="RollingFileAppenderV2" type="log4net.Appender.RollingFileAppender"> 
<file type="log4net.Util.PatternString" value="Logs\%property{dblog}" />
.
.
.
<logger name="Logger1"> 
<level value="DEBUG" /> 
<appender-ref ref="RollingFileAppenderV1" /> 
</logger> 
<logger name="Logger2"> 
<level value="DEBUG" /> 
<appender-ref ref="RollingFileAppenderV2" /> 
</logger> 
Run Code Online (Sandbox Code Playgroud)

在VB.NET代码中,我将文件名设置为:

log4net.GlobalContext.Properties("applog") = "file1.log"  
Dim logobj as log4net.Ilog = LogManager.GetLogger("Logger1")   
logobj.debug("test") 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它会创建"file1.log"以及另一个名为"null"的空文件.仅当我在运行时设置任一appenders文件名时才会发生这种情况.任何帮助赞赏.

Mar*_*tin 6

据我所知,日志文件是在配置log4net时创建的.这意味着您需要先确保设置属性,然后再配置log4net.

例如

log4net.GlobalContext.Properties["applog"] = "file1.log"
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)