куда писать лог файл? - PullRequest
       20

куда писать лог файл?

2 голосов
/ 30 августа 2011

Я использую nlog для записи файлов журнала в целях отладки. В настоящее время местоположение файла журнала установлено на:

<target 
    name="file" 
    xsi:type="File" 
    fileName="${specialfolder:folder=LocalApplicationData}/x/y.log" 

, но это приводит к тому, что файл записывается в c:\x\y.log, а не %windir%\ServiceProfiles\NetworkService\AppData\Local\x\y.log, как и следовало ожидать при использовании asp.net/IIS под учетной записью NETWORK SERVICE.

Проверка значения для Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) в веб-приложении приводит к пустой / нулевой строке, которая хотя бы объясняет, почему мои журналы попадают в корень.

Так что на самом деле два вопроса:

У нас есть службы, написанные и работающие под учетной записью NETWORK SERVICE, которые правильно разрешают этот путь. Что такого особенного в asp.net/IIS, что для этой специальной папки не возвращается значение?

Где находится безопасное и разумное место для записи журнала, если мой процесс asp.net выполняется под учетной записью NETWORK SERVICE?

1 Ответ

1 голос
/ 01 сентября 2011

Если мои знания верны, проблема в том, что IIS не загружает профиль для сетевой службы пользователя.

Этот параметр можно настроить в свойствах пула приложений ( source *)1004 *)

load the user profile of the application pool identity

Если для этого параметра установлено значение true, вызов Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) должен вернуть правильный результат.

См. Также:

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

...