В моем app.config я поставил
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="%programdata%/log-file.txt"/>
но это не сработало. Любые идеи?
В моем app.config я поставил
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="%programdata%/log-file.txt"/>
но это не сработало. Любые идеи?
Синтаксис log4net для расширения переменных среды: «$ {Variable}», например.
<file value="${LOCALAPPDATA}\GojiSoft\GojiLog\log.txt" />
Воскрешая старую тему здесь, но я столкнулся с той же проблемой и решил поделиться.
${PROGRAMDATA}, как обсуждалось в ветке комментариев другого ответа, у меня не сработало (так же, как и для OP). Однако я где-то видел комментарий о том, что он чувствителен к регистру. Попробовал ${ProgramData} и, конечно же, все заработало.
Используйте ${APPDATA} вместо ${LOCALAPPDATA}
Мы обнаружили, что при использовании Log4Net с DotNetCore и методом расширения Microsoft.Extensions.Logging.Log4NetProvider переменные среды не передаются. Это связано с тем, что конфигуратор log4net настраивается путем анализа файла конфигурации log4net в формате XML перед его передачей в конфигуратор log4net, который обходит подстановку переменных среды. Однако вы можете переопределить свойства, выполнив следующие действия:
hostBuilder.ConfigureLogging(logBuilder =>
{
var logsPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
logBuilder.AddLog4Net(new Log4NetProviderOptions
{
PropertyOverrides = new List<NodeInfo>
{
new NodeInfo
{
XPath = "//appender[@name='rollingFile']//file",
Attributes = new Dictionary<string, string>
{
{
"value", Path.Combine(logsPath, "Application.log")
}
}
}
}
});
});
<log4net>
<root>
<level value="INFO" />
<appender-ref ref="console" />
<appender-ref ref="rollingFile" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level - %message%newline" />
</layout>
</appender>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender">
<file value="Application.log" /> <!--This is overidden at run time. Based on the appender name: rollingFile.-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>