У меня есть приложение WPF, которое использует log4net. Когда я запускаю его в Visual Studio, файл журнала создается в папке Debug или Release, как ожидалось.log4net файл журнала не записывается при развертывании приложения
Однако, когда я создаю установщик и запускаю установленное приложение, файл журнала не создается. Я добавил следующие строки кода ...
string logFilePath = ((Hierarchy)LogManager.GetRepository())
.Root.Appenders.OfType<FileAppender>()
.FirstOrDefault()?.File;
using (StreamWriter sw = new StreamWriter(@"d:\log.log")) {
sw.WriteLine("Log file: " + logFilePath);
}
... чтобы я мог проверить, что файл журнала писался в том месте, как я ожидал. Он показал мне, что файл журнала должен быть записан в C:\Program Files (x86)\Physio Diary\PhysioDiaryClient.log
, что и я ожидал.
Однако файл не существует. Любая идея почему?
Вот верх файла App.config ...
<?xml version="1.0"
encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File"
value="PhysioDiaryClient.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-7level %logger - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
В нижней части файла выглядит следующим образом ...
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
Биты между все делать с услугами WCF, которые использует приложение.
У вас есть идеи?
Edit: В качестве теста я пытался жестким кодированием пути к файлу войти App.config к моему D: диск (так что это жестко, и речи о проблеме прав доступа), но файл еще не было создано.
Нельзя настроить каталог% ProgramFiles% в качестве цели ведения журнала, поскольку общепринятым приложениям не разрешено писать в этот каталог. – dymanoid
@dymanoid В идеале я хотел бы записать файл журнала в папку клиента в локальной папке пользователя. Любая идея, как я это сделаю? Не уверен, что это ответ, хотя, поскольку файл не написан, даже если я жестко программирую путь к моему диску D: где у меня определенно есть разрешения. Тем не менее, стоит сначала определить местоположение и посмотреть, поможет ли это. благодаря –