Что происходит, если Log4Net не имеет разрешения на доступ к файловой системе - PullRequest
0 голосов
/ 11 января 2011

Я внедряю решение для ведения журналов с помощью Log4Net для службы Windows NT. Я могу переключить переключатель в файле конфигурации, чтобы начать запись информации в файловую систему. До сих пор мне удавалось добиться этого, имея накатанный файл appender и log4net «Наблюдать» за файлом конфигурации.

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

Я не могу найти больше информации по этой теме, кроме этой записи:

Как отключить создание пустого файла журнала при запуске приложения?

Меня беспокоит то, что кто-то может настроить службу с набором разрешений очень низкого уровня, который даже не будет иметь доступа для создания файлов журнала в файловой системе. Я не хочу понизить производительность из-за того, что исключения возникают каждый раз, когда я нажимаю на оператор записи, даже если я не собирался регистрироваться.

Я завернул каждый оператор ведения журнала проверкой, чтобы убедиться, что уровень ведения журнала включен, прежде чем пытаться войти в систему, но я все еще не уверен, будут ли во внутренних работах log4net генерироваться исключения, если файл, настроенный в приложении, не был создан.

if (logger.IsDebugEnabled)
{
    logger.DebugFormat(format, traceMessage);    
}

Кто-нибудь знает, что будет делать log4net, если он не сможет изначально создать файлы журнала?

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

Атрибут в моем классе журналирования для отслеживания изменений конфигурации:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Logging.config", Watch = true)]

Appender:

  <appender name="Test" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value=".\\AppLogs\\_test.%appdomain.log" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ALL" />
      <levelMax value="FATAL" />
      <acceptOnMatch value="false"/>
    </filter>
    <filter type="log4net.Filter.LoggerMatchFilter">
      <loggerToMatch value="Test" />
    </filter>
    <appendToFile value="true" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="6MB" />
    <rollingStyle value="Size" />
    <staticLogFileName value="true" />
    <filter type="log4net.Filter.DenyAllFilter" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level - %message%newline" />
    </layout>
  </appender>

1 Ответ

1 голос
/ 11 января 2011

«Меня беспокоит то, что кто-то может настроить службу с набором разрешений очень низкого уровня, который даже не будет иметь доступа для создания файлов журналов в файловой системе.» - при запуске службы определяют ваш минимальный наборТребуемые разрешения присутствуют и выдают исключение (или обрабатывают иначе), если их нет.

Я не думаю, что это проблема регистрации сама по себе;это больше вопрос того, есть ли у вашего сервиса необходимые разрешения.

...