我需要将我的日志文件存储在Logs子文件夹中。通常你会按照以下方式修改App.config中的FileAppender:
<file type="log4net.Util.PatternString" value="Logs\MyLog.log" />
然而,这不是跨平台的,因为如果你在linux上运行它,它将创建一个名为'Logs \ MyLog.log'的文件,而不是一个目录。这是因为'\'不是linux上的路径分隔符。
我们可以将其更改为'/',但这只适用于Linux而不适用于Windows。
如何使用log4net的XML配置将我的日志放在跨平台工作的子文件夹中?
答案 0 :(得分:1)
一个可能的解决方案是,您可以为Windows配置文件,而不是在配置测试之后,如果您在Linux上。在Linux上,您可以获取appender并使用替换为Linux兼容来更改file =&gt;值:
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 ();
}
}
}
}
}
答案 1 :(得分:1)
另一种解决方案是使用它:
<file type="log4net.Util.PatternString" value=".//Logs//MyLog.log" />