如何使用log4net登录到特殊文件夹?
如何使用app.config文件登录到特殊文件夹(例如,如何使用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
%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" />