Vraag TimeBasedRollingBeleid dat niet wordt uitgevoerd, tenzij er nieuwe logboeken zijn


Hier is mijn config:

<appender name="myAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <append>true</append>
    <file>mylogs.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>mylogs-%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>

        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} [%thread] - %M:%L - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

Volgens het logback-document dat hier te vinden is (http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy), wordt het bestand elke minuut omgewisseld op basis van mijn %d{yyyy-MM-dd_HH-mm} fileNamePattern.

Ik heb gezien hoe dit werkt en hier zijn mijn bevindingen:

  • Het maakt heel weinig een logbestand aan.
  • Het maakt alleen een logbestand voor de vorige minuut wanneer de nieuwe log arriveert. (ik heb bijvoorbeeld een login om 23:53 uur, en het is nu 23:55 uur, het maakt niet meteen een nieuw logbestand aan voor de 11:53 uur wanneer het 11:54 uur aankomt, maar wanneer er later een nieuw logboek komt, zeg dan bij 11:56 uur, het maakt nu het bestand voor 23:53 uur.)

Mis ik iets, ik dacht dat het elke minuut een logbestand aanmaakt?


11
2018-03-05 04:58


oorsprong


antwoorden:


Scroll verder naar beneden in het gedeelte van de documentatie die u hebt gelinkt en u zult dit vinden:

Om verschillende technische redenen zijn rollovers niet klokgestuurd, maar afhankelijk van de komst van logging-evenementen. Bijvoorbeeld, op 8 maart 2002, in de veronderstelling dat de fileNamePattern is ingesteld op jjjj-MM-dd (dagelijkse rollover), zal de aankomst van de eerste gebeurtenis na middernacht een rollover activeren. Als er tijdens gebeurtenissen geen logging-gebeurtenissen zijn, bijvoorbeeld 23 minuten en 47 seconden na middernacht, vindt de rollover plaats op 00: 23'47 AM op 9 maart en niet om 0:00 AM. Afhankelijk van de aankomstsnelheid van gebeurtenissen kunnen rollovers dus met enige latentie worden geactiveerd. Ongeacht de vertraging is echter bekend dat het rollover-algoritme correct is, in die zin dat alle logboekregistraties die gedurende een bepaalde periode zijn gegenereerd, worden uitgevoerd in het juiste bestand dat die periode begrenst.

Korte versie: het is niet tijdgestuurd, maar wordt geactiveerd door logboekgebeurtenissen. Geen logging-evenementen betekent geen rollover. In een configuratie die is ingesteld op het omkeren van elke minuut, betekent dit dat er geen bestanden zijn voor elke minuut waarvoor geen logging-events aankomen.


18
2018-03-05 08:22



U hebt geen <0> -bestandseigenschappen nodig.

Als u dat niet doet, kunt u uw problemen oplossen

Merk op dat de bestandseigenschap in RollingFileAppender (de ouder van   TimeBasedRollingPolicy) kan worden ingesteld of weggelaten. Door de   bestandseigenschap van de bevattende FileAppender, kunt u de   locatie van het actieve logbestand en de locatie van het gearchiveerde logboek   bestanden. De huidige logboeken worden altijd gericht op het opgegeven bestand   door de eigenschap file. Hieruit volgt dat de naam van de momenteel actieve   logbestand verandert niet na verloop van tijd. Als u echter ervoor kiest om de   bestandseigenschap, dan zal het actieve bestand voor elk opnieuw worden berekend   periode op basis van de waarde van fileNamePattern. De onderstaande voorbeelden   moet dit punt verduidelijken.


4
2018-02-26 08:28