0

我陷入了一种情况,我认为我需要知道用户在 logging.xml 中指定的日志文件的名称。具体来说,我正在尝试检索元素中value属性的值file,如下所示(取自 log4net 文档

有关完整的详细信息,请参阅 SDK 参考条目:log4net.Appender.FileAppender。
以下示例显示如何配置 FileAppender 以将消息写入文件。指定的文件是 log-file.txt。每次记录过程开始时,该文件将被附加而不是覆盖。

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="log-file.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

当我使用以下代码遍历附加程序时:

log4net.Repository.ILoggerRepository repo = LogManager.GetRepository();
foreach (log4net.Appender.IAppender appender in repo.GetAppenders())
{
    FileAppender fa = appender as FileAppender;
}

我无法在fa对象的任何地方找到值“log-file.txt”。也许我错过了它,因为调试器中暴露了很多成员和数据。

任何人都可以提出一种获得这个价值的方法吗?

4

1 回答 1

1

FileAppender具有File包含将写入日志记录的文件的路径的属性。但在您开始寻找此属性之前,请验证Nameappender - 您可以FileAppenders配置多个。

还要记住,RollingFileAppender也匹配条件appender is FileAppender,因为它是从FileAppender.

string file = repo.GetAppenders()
                  .OfType<FileAppender>()
                  .Where(fa => fa.Name == "FileAppender")
                  .Single()
                  .Name;
于 2012-10-29T18:21:56.887 回答