我配置我的log4net来监视对app.config文件所做的更改.
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序并更改配置文件中的内容时,这些更改仅在我重新启动应用程序时生效.为什么会这样?
还有办法告诉log4net监视app.config中的更改吗?喜欢:
<appender name="FileAppender" type="log4net.Appender.FileAppender" >
<watch value="true" />
</appender>
Run Code Online (Sandbox Code Playgroud)
-------------编辑-------------
我现在尝试使用单独的配置文件:log4net.config.
它看起来像这样:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="c:\log.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c (line %L) -- %m%n" />
</layout>
</appender>
<root>
<appender-ref ref="FileAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
在我的assemblyInfo.cs中,我写了以下内容:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
记录到该文件的类如下所示:
ILog myLogger = LogManager.GetLogger(typeof(Form1));
myLogger.Debug("test");
Run Code Online (Sandbox Code Playgroud)
这就像旧版本一样.日志文件条目已经生成,但是当我在运行时更改我的log4net.config时,这些更改不会应用...."Watch = true"应该启用该功能,对吧?
默认情况下,.NET应用程序的配置文件以"exe文件名".config命名.我想知道是否可以动态指定一个应用程序的配置.
例如,构建的应用程序是"foo.exe".在运行时,配置文件是"foo.exe.config".是否可以让它接受命令行参数来使用其他配置文件.因此,应用程序可以使用下面的其他配置.
foo.exe /config:bar.config
bar.config用作foo.exe.config的配置文件.