Как заставить log4net генерировать файлы журнала при работе от имени пользователя без прав администратора?
Процесс, работающий как пользователь без прав администратора, не имеет прав на запись в папку с файлами программы. Каков наилучший способ настроить log4net для записи в местоположение, на которое у пользователя, не являющегося администратором, есть права?
В идеале было бы:
- Один файл конфигурации или конфигурация из кода будет работать для всех версий MS Windows, поддерживаемых.NET.
- Поддержка сервисов MS Windows
- Поддержка log4net версии 1.2.0.30714 (мы должны использовать эту версию)
Смежные вопросы:
1 ответ
Решение
Почему вы не можете просто настроить log4net для записи в файл в папке, к которой у вас есть соответствующие права доступа? Вы делаете это с FileAppender:
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="c:/path/log-file.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
Вышесказанное взято отсюда. С той же страницы:
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="${TMP}\log-file.txt" />
<appendToFile value="true" />
<encoding value="unicodeFFFE" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
Вы можете использовать переменную окружения, чтобы установить путь к файлу.