我陷入困境,我相信我需要知道用户在logging.xml中指定的日志文件的名称。具体来说,我正在尝试检索value
元素中file
属性的值,如下所示(taken from the log4net docs)
有关完整详细信息,请参阅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>
当我使用以下代码遍历appender时:
log4net.Repository.ILoggerRepository repo = LogManager.GetRepository();
foreach (log4net.Appender.IAppender appender in repo.GetAppenders())
{
FileAppender fa = appender as FileAppender;
}
我无法在fa
对象中的任何位置找到值“log-file.txt”。也许我错过了它,因为在调试器中暴露了很多成员和数据。
有人可以建议一种方法来获得这个值吗?
答案 0 :(得分:1)
FileAppender
具有属性File
,其中包含将写入日志记录的文件的路径。但在开始寻找此属性之前,请验证appender的Name
- 您可以配置多个FileAppenders
。
另请注意,RollingFileAppender
也符合条件appender is FileAppender
,因为它来自FileAppender
。
string file = repo.GetAppenders()
.OfType<FileAppender>()
.Where(fa => fa.Name == "FileAppender")
.Single()
.Name;