log4net中的%property无法工作

10

我有一个小的测试项目,其中包含以下代码:

class Program
{
    static void Main(string[] args)
    {
        log4net.GlobalContext.Properties["logFileName"] = "log.txt";
        log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));

        log4net.ILog logger = log4net.LogManager.GetLogger("Tests");

        logger.Debug("Test message");
    }
}

我的 log4net.xml 配置文件包含以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="%property{logFileName}" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="100KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%utcdate{ISO8601} [%level][%logger] %message%newline" />
        </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFileAppender" />
    </root>
</log4net>

我的问题是为什么log4net创建的文件名是< strong>%property{logFileName},而不是用log.txt代替它? log4net库来自NuGet (Id:log4net Version:2.0.3)。

永远不要低估删除 bin/obj 文件夹的威力!即使按照答案建议的做了,文件仍然可能无法正确生成 :s - Joel
1个回答

16
请在您的xml配置中使用此代码。
<file type="log4net.Util.PatternString" value=".\%property{logFileName}" />

您的建议解决了问题。非常感谢! - Pavels Ahmadulins
谢谢!在我找到这个之前,我一度绝望,现在我的配置已经正常工作了。 :-) - Flash Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接