Mam aplikację usługową, która po uruchomieniu odczytuje plik XML i rozpoczyna wątek dla każdego wpisu w pliku XML. Każdy wątek tworzy instancję klasy robotniczej, która wymaga rejestratora do rejestrowania dowolnego wyniku w pliku dziennika wątku.Logowanie do pojedynczego pliku dziennika dla każdego wątku
w usługach app.config mam ustawienia konfiguracji log4net określone użycie appender XML i plik jest określony jako PatternString jak pokazano poniżej:
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
w wątku zablokowane metody dla każdej instancji utworzono klasę robotniczą Otrzymuję program rejestrujący przy użyciu metody log4net.LogManager.GetLogger("MyLogger")
, a następnie ustawiam bieżącą wątek PatternStrings LogName z wykorzystaniem właściwości ThreadContext.Properties["LogName"] = "Log name prefix"
.
Wszystkie pliki są tworzone, ale po wywołaniu rejestratora loguje się tylko do jednego pozornie losowego pliku.
Szukałem od dłuższego czasu, próbując znaleźć rozwiązanie lub odpowiedzi na to, co robię źle, ale nie miałem szczęścia.
Czy ktoś ma pojęcie, dlaczego tak się dzieje?
Wielkie dzięki! Miałem ten sam problem z wątkami i logowaniem się do różnych plików. Przejrzałem wiele postów i rozwiązań, ale tylko ten jeden mnie ugodził. –
Dziękuję bardzo ... To podejście rozwiązało mój problem ... – Emerson