我有一个需要将我的日志文件存储在日志子文件夹中。 通常你会这样做,我修改你的App.config中的FileAppender如下:
<file type="log4net.Util.PatternString" value="Logs\MyLog.log" />
但是这不是跨平台的,因为如果你在linux上运行它,它将创build一个名为“Logs \ MyLog.log”的文件,而不是一个目录。 这是因为'\'不是Linux上的path分隔符。
我们可以将其更改为“/”,但这只适用于Linux而不适用于Windows。
如何使用log4net的XMLconfiguration将我的日志放在跨平台的子文件夹中?
一个可能的解决方案可以是,如果你在Linux上,你可以配置文件的Windows,而不是配置测试。 在Linux上的时候,你可以得到appender,并用一个替换的文件=> value来替换Linux兼容:
XmlConfigurator.Configure(); if (Environment.OSVersion.Platform == PlatformID.Unix){ var repository = LogManager.GetRepository() as Hierarchy; if (repository != null) { var appenders = repository.GetAppenders(); if (appenders != null) { foreach (var appender in appenders) { if (appender is FileAppender) { var fileLogAppender = appender as FileAppender; fileLogAppender.File = fileLogAppender.File.Replace (@"\", Path.DirectorySeparatorChar.ToString ()); fileLogAppender.ActivateOptions (); } } } } }
另一个解决方案就是这样使用它:
<file type="log4net.Util.PatternString" value=".//Logs//MyLog.log" />