Вот полный код из списка рассылки log4net, с которым pilif связан:
По сути, метод заключается в реализации пользовательского конвертера шаблонов для файла конфигурации log4net.
Сначала добавьте этот класс в ваш проект:
public class SpecialFolderPatternConverter : log4net.Util.PatternConverter
{
override protected void Convert(System.IO.TextWriter writer, object state)
{
Environment.SpecialFolder specialFolder = (Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), base.Option, true);
writer.Write(Environment.GetFolderPath(specialFolder));
}
}
Затем настройте параметр File вашего FileAppender следующим образом:
<file type="log4net.Util.PatternString">
<converter>
<name value="folder" />
<type value="MyAppName.SpecialFolderPatternConverter,MyAppName" />
</converter>
<conversionPattern value="%folder{CommonApplicationData}\\SomeOtherFolder\\log.txt" />
</file>
В основном %folder
говорит ему взглянуть на конвертер с именем folder
, который указывает на класс SpecialFolderPatternConverter. Затем он вызывает Convert
для этого класса, передавая значение перечисления CommonApplicationData (или любого другого).
Очевидно, что в следующем выпуске log4net (1.2.11) будет более простой метод, как описано здесь .