如何使用log4net登录到特殊文件夹?

如何使用log4net登录到特殊文件夹?,log4net,app-config,special-folders,Log4net,App Config,Special Folders,如何使用app.config文件登录到特殊文件夹(例如,%APPDATA%) 我可以通过编程来完成,但我需要能够使用app.config文件进行配置。我看过一篇使用%envFolderPath的帖子。它在最新发布的版本中不可用,但仅在其最新代码中可用 下面是我以编程方式将日志设置为特殊文件夹的代码 public void ExampleLog { XmlConfigurator.Configure(); var fileName = GetFileName(); var

如何使用app.config文件登录到特殊文件夹(例如,
%APPDATA%

我可以通过编程来完成,但我需要能够使用app.config文件进行配置。我看过一篇使用
%envFolderPath
的帖子。它在最新发布的版本中不可用,但仅在其最新代码中可用

下面是我以编程方式将日志设置为特殊文件夹的代码

public void ExampleLog
{
    XmlConfigurator.Configure();

    var fileName = GetFileName();
    var appender = new log4net.Appender.RollingFileAppender
    {
        Layout = new log4net.Layout.PatternLayout("%d - %m%n"),
        File = fileName,
        MaxSizeRollBackups = 10,
        MaximumFileSize = "100MB",
        AppendToFile = true,
        Threshold = Level.Debug
    };

    appender.ActivateOptions();
    BasicConfigurator.Configure(appender);
}

private static string GetFileName()
{
    const string subPath = "MySubFolder";
    var path = String.Format(@"{0}\{1}", Environment.GetFolderPath  (Environment.SpecialFolder.CommonApplicationData), subPath);
    const string logName = "Log.txt";
    return Path.Combine(path, logName);
}

非常确定这个语法在当前版本中可用

<file type="log4net.Util.PatternString" value="%env{APPDATA}\\MyApp\\Log.txt" />

如果您还需要其他内容,可以研究PatternString类的子类化选项,如下所述:

查看log4net文档上的配置示例(所有其他参数)


很抱歉反应太晚。谢谢我认为这不是一个好主意,因为在Vista和Windows 7上,%APPDATA%解析到用户的漫游目录,这意味着日志文件将同步到域服务器,并在用户每次登录时下载。请参阅此处的注释:如果您关心同步漫游数据的时间,请使用%LOCALAPPDATA%(非漫游等效项)。我认为无论日志文件有多大,在任何情况下,这通常都会更好。可能的重复
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="100KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.SimpleLayout" />
    </layout>
</appender>
<file value="${APPDATA}\log.txt" />