2013-06-13 28 views
5

Korzystanie z wersji 1.2.11. Rejestrowanie działa na moim komputerze, ale nie tworzy katalogu ani dziennika po wdrożeniu.Log4Net Not Logging po wdrożeniu

Próbowałem:

  • podając pełny dostęp do katalogów, każdy, IUSR lokalnych użytkowników.
  • uruchamianie puli aplikacji jako lokalnego konta administratora.
  • używać wewnętrznego debugowania jako Phil Haack describes here.

Zatrzymano i uruchomiono pulę aplikacji po każdej zmianie.

Nic nie jest tworzone w pliku wyjściowym.

Moja konfiguracja log4Net znajduje się poniżej. Wszelkie przemyślenia na temat tego, co spróbować dalej?

<?xml version="1.0"?> 
<log4net debug="true"> 
    <appender name="file" type="log4net.Appender.RollingFileAppender"> 
    <file value="..\Logging\log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value="yyyyMMdd" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="1MB" /> 
    <threshold value="DEBUG" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 
    <appender name="console" type="log4net.Appender.DebugAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" /> 
    </layout> 
    </appender> 
    <root> 
    <level value="ALL" /> 
    <appender-ref ref="file" /> 
    <appender-ref ref="console" /> 
    </root> 
</log4net> 
+0

jest katalog lub plik wyjściowy stworzone? –

+0

Nie, żaden nie zostanie utworzony. –

+1

Czy w kodzie konfigurujesz Log4Net, aby używał konfiguracji XML? Powinien gdzieś używać klasy 'XmlConfigurator'. –

Odpowiedz

6

Jeśli katalog i plik nie są tworzone, najprawdopodobniej konfiguracja nie jest odczytywana (i dlatego używana) w czasie wykonywania.

Zawsze zapominam o dodaniu pojedynczej linii kodu dla Log4net, która podpina konfigurację. Ten kod zwykle pojawia się w klasie bootstrap w aplikacji (np. Global.asax dla aplikacji ASP.NET).

XmlConfigurator.Configure(new System.IO.FileInfo(configFile)); // configFile being the path to the file. 

Zamiast powyższego in-line, można dodać ten atrybut do pliku AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

Tak czy inaczej, będzie to drut log4net. Więcej informacji można znaleźć w Manual Configuration section of the log4net docs.

+8

Nie jestem pewien, jak to wyjaśnia, że ​​jest w stanie rejestrować się, gdy jest w środowisku programistycznym. –

+2

Przez chwilę waliłem głową w ścianę. Próbowałem użyć metody AssemblyInfo.cs, która działała na moim lokalnym polu dev, ale nie na serwerze. Kiedy dodałem wiersz 'XmlConfigurator.Configure();' do pliku Global.asax.cs, zadziałało! – JebaDaHut

+0

Tak samo, jak @JebaDaHut - Pracował na moim komputerze dev przy użyciu linii AssemblyInfo.cs, ale nie po wdrożeniu. Po dodaniu 'XmlConfigurator.ConfigureAndWatch (new FileInfo (....)) zaczęło się logowanie na moich serwerach wdrożeniowych. – silencedmessage

2

Brzmi jak problem z pozwoleniem dla mnie. Niemal zawsze korzystam z katalogu, w którym nie muszę włączać żadnych specjalnych uprawnień, aby aplikacje zapisywały pliki dziennika.

Oto co ja generalnie korzystać z log4net:

<file type="log4net.Util.PatternString" value="${ALLUSERSPROFILE}/<Company Name>/Logs/<Program Name>/<Log file name>.txt" /> 

cource musisz zastąpić nazwę firmy, nazwę programu i Log nazwę pliku w wyżej z rzeczywistymi wartościami.

Spowoduje to zapis w folderze ProgramData, gdzie dostęp zwykle nie jest ograniczony. Możesz przejść do tego folderu w Eksploratorze plików, wpisując% ProgramData% lub% AllUsersProfile%

Inną rzeczą, która mi się podoba w tej metodzie, jest to, że działa na prawie każdym Microsoft O/S. XP, Vista, 7, 8

2

Prawdopodobnie nie wiedzą, gdzie jesteś zalogowaniu:

<file value="..\Logging\log.txt" /> 

Will pochodzi z katalogu, który jest uruchomiony iis swój katalog. Możesz lepiej wykorzystać pełną ścieżkę, taką jak:

<file value="c:\Logging\log.txt" /> 

Następnie możesz podać odpowiednie prawa dostępu do katalogu rejestrowania. Log4net nie utworzy żadnych katalogów, o ile wiem. Dlatego musisz najpierw utworzyć katalog c: \ logging.

0

non odpowiedzi pracował dla mnie aż położę te linie do ustawień web.config aplikacji:

<add key="log4net.Config" value="Log.config" /> 
<add key="log4net.Config.Watch" value="True" /> 
Powiązane problemy