【发布时间】:2013-08-21 18:07:26
【问题描述】:
在我们的 C# 应用程序中,我们将文件写入 Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)。我们的 log4net 日志文件也应该去那里,所以我们定义了 application.conf 如下:
<appender name="LogFile" type="log4net.Appender.RollingFileAppender">
<appendToFile value="true"/>
<file value="%USERPROFILE%\My Documents\MyApp\log.txt"/>
...snip...
</appender>
这有效,直到我们在具有非英语 Windows 的 PC 上运行。因为那时SpecialFolder.MyDocuments 指向文件夹Mijn Documenten,而日志仍然指向My Documents。混乱随之而来,因为现在我们的文件在两个地方。
我想将我的日志写入“真正的”我的文档文件夹。我该怎么做?
- 我试图找到像
%USERPROFILE%这样的环境变量,但我的文档似乎没有。 - 有一个注册表项定义了“我的文档”的真实位置,但无法从
application.conf访问。 -
我试图以编程方式覆盖我的 appender 的
File参数,如下所示:public static void ConfigureLogger() { XmlConfigurator.Configure(); Hierarchy hierarchy = (Hierarchy)log4net.LogManager.GetRepository(); foreach (var appender in hierarchy.Root.Appenders) { if (appender is FileAppender) { var fileAppender = appender as FileAppender; var logDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "MyApp"); var pathElements = fileAppender.File.Split(Path.DirectorySeparatorChar); var logFileName = pathElements.Last(); var fullLogFilePath = Path.Combine(logDirectory, logFileName); fileAppender.File = fullLogFilePath; } } }这也不起作用:当我检查记录器的内部时,
File属性会愉快地报告Mijn Documenten,但与此同时,日志仍然会转到My Documents。
我的想法快用完了!
【问题讨论】: