Wygląda na to, że został on przeniesiony do elementu konfiguracyjnego: <datePattern value = "dd.MM.yyyy'.log '" /> Pozdrawiam!
longda
3
@mstaessen <preserveLogFileNameExtension value="true" />to poprawna składnia i to jest świetna odpowiedź. Jak doszło do straty, czy mogę zapytać?
Larry B,
1
Jeśli dobrze pamiętam, tak było. Podczas uruchamiania log4net wygenerowałby pierwszą nazwę pliku w kolejności kroczącej. Wykryłby, że ten plik już istnieje, a następnie zdecydowałby się przenieść do drugiego pliku, ale gdy ten również już istnieje, nie decyduje się na przewinięcie, ale zamiast tego czyści go i nadpisuje wszystko w tym drugim pliku dziennika. Przechodzi zupełnie niezauważalnie, dopóki nie potrzebujesz dzienników wyczyszczonych ram czasowych ...
Myślę, że powinieneś podkreślić główny punkt dotyczący tego, jaki parametr rozwiązać problem, tak jak zrobił to @Mun. Jednak głosowałem również za twoją odpowiedzią.
RDeveloper,
1
To był element datePattern w połączeniu z elementem staticLogFileName (i zwróć uwagę na atrybut value dla elementu file), który działał dla mnie
Michhes
Pełna odpowiedź!
Nagesh
32
W przypadku RollingLogFileAppender potrzebujesz również tych elementów i wartości:
Działa, ale dodaje datę po rozszerzeniu pliku. Na przykład otrzymuję pliki dziennika, takie jak Error.log20111104 - Czy ktoś wie, jak sformatować nazwę pliku trochę lepiej?
do czego służy staticLogFileName? Chcę, aby plik dziennika został zmieniony pod nową nazwą dopiero po zakończeniu dnia. Chcę używać monitora dziennika, który za każdym razem sprawdza określony.
Niedziela,
22
Korzystając z Log4Net 1.2.13, używamy następujących ustawień konfiguracyjnych, aby zezwolić na datę i godzinę w nazwie pliku.
Jeśli rozmiar pliku jest problemem, poniższe zezwala na 500 plików o rozmiarze 5 MB do pojawienia się nowego dnia. CountDirection umożliwia rosnącą lub malejącą numerację plików, które nie są już aktualne.
Problem z innymi kombinacjami parametrów polegał na tym, że najnowszy plik nie miał wzorca czasu lub że wzorzec czasu był dodawany jako, .log20171215który tworzył nowy czas pliku (i nowy typ pliku! ) Każdego dnia - lub pojawiały się oba problemy.
Teraz z tym ustawieniem otrzymujesz pliki takie jak ten:
LOG4NET_Sample_Activity-20171215.log
co chciałem.
Podsumowując:
Nie umieszczaj wzorca daty w <file value=...atrybucie, po prostu zdefiniuj go w datePattern.
Upewnij się, że masz ustawiony atrybut preserveLogFileNameExtensionvaluetrue .
Upewnij się, że masz ustawioną staticLogFileNamewartośćfalse .
dlaczego są %date{yyyyMM}i value="ddMMyyyy" ? jaki jest wzór daty wejścia w życie?
Allan Ruin
Myślę, że datePattern jest dla nazwy pliku, ale% date {yyyyMM} dotyczy katalogu nadrzędnego (chciałem to w ten sposób)
Fourat
Atrybut datePattern ustawia okres kroczący dla Date rollingStyle. Zobacz logging.apache.org/log4net/release/config-examples.html w sekcji RollingFileAppender. „Na przykład wzorzec daty„ rrrrMMdd ”będzie przewijany każdego dnia. Listę dostępnych wzorców można znaleźć w sekcji System.Globalization.DateTimeFormatInfo.”
Ryan Buddicom
@rbuddicom tak, ale pytanie dotyczy tego, jak zachować rozszerzenie pliku.
Fourat
Wiem, Allan zakwestionował cel „value =" ddMMyyyy "”. Twój komentarz „Myślę, że datePattern dotyczy nazwy pliku” jest pod tym względem niepoprawny.
Ryan Buddicom,
0
Rozszerzona sekcja konfiguracji w poprzedniej odpowiedzi z
......<rollingStyle value="Composite"/>......
wymienione prace, ale nie musiałem używać
<staticLogFileName value="false"/>
. Myślę, że RollingAppender musi (logicznie) zignorować to ustawienie, ponieważ z definicji plik jest odbudowywany każdego dnia, gdy aplikacja jest ponownie uruchamiana / ponownie używana. Być może ma to znaczenie dla natychmiastowego przeniesienia za każdym razem, gdy aplikacja zostanie uruchomiona.
Dla mnie to nie zadziałałoby bez <staticLogFileName value = "false" />
nurettin
ja też, musiałem ustawić staticLogFileName na false, w przeciwnym razie nie zostanie zarejestrowane
oonyalo
0
Przeniosłem konfigurację do kodu, aby umożliwić łatwą modyfikację z CI przy użyciu zmiennej systemowej. Użyłem tego kodu dla nazwy pliku, a wynik to „Log_03-23-2020.log”
Odpowiedzi:
W pliku konfiguracyjnym Log4net użyj następującego parametru z RollingFileAppender:
źródło
<preserveLogFileNameExtension value="true" />
to poprawna składnia i to jest świetna odpowiedź. Jak doszło do straty, czy mogę zapytać?źródło
W przypadku RollingLogFileAppender potrzebujesz również tych elementów i wartości:
źródło
Korzystając z Log4Net 1.2.13, używamy następujących ustawień konfiguracyjnych, aby zezwolić na datę i godzinę w nazwie pliku.
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
Który dostarczy pliki w następującej konwencji:
logname-2015-04-17.txt
Dzięki temu zwykle najlepiej jest mieć następujące elementy, aby upewnić się, że trzymasz 1 dziennik dziennie.
Jeśli rozmiar pliku jest problemem, poniższe zezwala na 500 plików o rozmiarze 5 MB do pojawienia się nowego dnia. CountDirection umożliwia rosnącą lub malejącą numerację plików, które nie są już aktualne.
źródło
Skończyło się na użyciu (zwróć uwagę na nazwę pliku „.log” i pojedyncze cudzysłowy wokół „myfilename_”):
To daje mi:
źródło
preserveLogFileNameExtension
nie działa we wcześniejszych wersjach log4net (np. wersja 1.2.10), jak opisano tutajWypróbowałem wszystkie odpowiedzi, ale zawsze czegoś brakowało i nie działało zgodnie z oczekiwaniami.
Następnie trochę poeksperymentowałem ze wskazówkami podanymi w każdej odpowiedzi i udało mi się z następującym ustawieniem:
Problem z innymi kombinacjami parametrów polegał na tym, że najnowszy plik nie miał wzorca czasu lub że wzorzec czasu był dodawany jako,
.log20171215
który tworzył nowy czas pliku (i nowy typ pliku! ) Każdego dnia - lub pojawiały się oba problemy.Teraz z tym ustawieniem otrzymujesz pliki takie jak ten:
LOG4NET_Sample_Activity-20171215.log
co chciałem.
Podsumowując:
Nie umieszczaj wzorca daty w
<file value=...
atrybucie, po prostu zdefiniuj go wdatePattern
.Upewnij się, że masz ustawiony atrybut
preserveLogFileNameExtension
valuetrue
.Upewnij się, że masz ustawioną
staticLogFileName
wartośćfalse
.Ustaw wartość
rollingStyle
atrybutu na .Date
źródło
Aby zachować rozszerzenie pliku:
źródło
%date{yyyyMM}
ivalue="ddMMyyyy"
? jaki jest wzór daty wejścia w życie?Rozszerzona sekcja konfiguracji w poprzedniej odpowiedzi z
wymienione prace, ale nie musiałem używać
. Myślę, że RollingAppender musi (logicznie) zignorować to ustawienie, ponieważ z definicji plik jest odbudowywany każdego dnia, gdy aplikacja jest ponownie uruchamiana / ponownie używana. Być może ma to znaczenie dla natychmiastowego przeniesienia za każdym razem, gdy aplikacja zostanie uruchomiona.
źródło
Przeniosłem konfigurację do kodu, aby umożliwić łatwą modyfikację z CI przy użyciu zmiennej systemowej. Użyłem tego kodu dla nazwy pliku, a wynik to „Log_03-23-2020.log”
źródło