2013-04-17 13 views
6

Podczas uruchamiania mojej usługi Windows z poświadczeniami "NT AUTHORITY \ NETWORK SERVICE" pojawia się dziwny problem z NLog: po prostu nie rejestruje niczego w pliku docelowym, jeśli nazwa pliku zawiera kropki.NLog nie zapisuje do pliku docelowego z nazwą pliku zawierającą kropki

biegnę usługę Windows na moim WinServer 2008 R2 Standard z włączoną funkcja .NET Framework 3.5 SP1, plik NLog.config się następująco:

<targets> 
    <target xsi:type="File" 
    name="f" 
    fileName="${basedir}/logs/${shortdate}.txt" 
    encoding="utf-8" 
    concurrentWrites="true" 
    keepFileOpen="false" 
    layout="${longdate} ${uppercase:${level}} ${message}"/> 
</targets> 
<rules> 
    <logger name="*" minlevel="Trace" writeTo="f" /> 
</rules> 

po pewnym googling i eksperymentowanie z config wymyśliłem obejście polegające na tym, że nie uwzględniono rozszerzenia pliku w parametrze fileName i działało dobrze, co rozwiązuje problem, ale nie wygląda na przyzwoite rozwiązanie.

To, co sprawia, że ​​problem wygląda bardziej jak dziwna magia, to fakt, że udało mi się rozwiązać problem z rozszerzeniem pliku logu w konfiguracji mojej drugiej usługi Windows (która działa na tej samej maszynie z tym samym kredytodawcy) po prostu zmieniając informacje o montażu w opcjach projektu.

Wszelkie pomysły?

Odpowiedz

13

Po włączeniu wewnętrznego plik dziennika NLog za

<nlog 
    internalLogFile="c:\temp\nlogproblems.txt" 
    throwExceptions="true" 
    xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

udało mi się złapać UnathorizedAccessException

2013-04-17 11:06:14.0445 Error Exception in asynchronous handler 
    NLog.NLogRuntimeException: Exception occurred in NLog ---> 
    System.UnauthorizedAccessException: Access is denied. 
    (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 

które doprowadziły do ​​wniosku, że należy ustalić uprawnienia folderu logs.

Wreszcie nie więcej dziwnej magii, po prostu musiałem pozwolić NETWORK SERVICE zapisywanie w folderze .

0

w moim przypadku był to użytkownik uruchamiający pulę aplikacji.

wydaje się, że w niektórych przypadkach trzeba konkretnych użytkowników, moja sprawa została uruchomiona IHttpHandler i miał mehtods ja dzwonię z ProcessRequest iz jakiegoś powodu od samego ProcessRequest to działało dobrze jeszcze z submethods dostałem

Exception in asynchronous handler 
    NLog.NLogRuntimeException: Exception occurred in NLog ---> 
    System.UnauthorizedAccessException: Access is denied. 
    (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 

i po przeczytaniu 7kun odpowiedź dałem Wszyscy pełną kontrolę i to działało, a następnie zmienia się znaleźć prawdziwego brakujący użytkownikowi

+0

Witam, czy możesz mi powiedzieć, jak pan dał każdemu pełną kontrolę? – tabby

+0

zobacz ten samouczek, https://www.youtube.com/watch?v=ytmYVbMEsGg, a zamiast określonego typu użytkownika "Wszyscy" – bresleveloper

Powiązane problemy