Как заставить 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>

Вы можете использовать переменную окружения, чтобы установить путь к файлу.

Другие вопросы по тегам