Class AbstractSequenceJsonProvider<Event extends DeferredProcessingAware>

All Implemented Interfaces:
ContextAware, JsonProvider<Event>
Direct Known Subclasses:
SequenceJsonProvider, SequenceJsonProvider

public abstract class AbstractSequenceJsonProvider<Event extends DeferredProcessingAware> extends AbstractFieldJsonProvider<Event>
Outputs an incrementing sequence number. Useful for determining if log events get lost along the transport chain.

With Logback 1.3 the sequence number is obtained from ILoggingEvent.getSequenceNumber() provided the LoggerContext is configured with a SequenceNumberGenerator (which is not by default). If no SequenceNumberGenerator is configured, the provider issues a warning and reverts to a locally generated incrementing number.

With Logback versions prior to 1.3 the sequence number is generated locally by the provider itself.

If needed, a different strategy can be used by setting a custom provider with setSequenceProvider(Function).

  • Field Details

  • Constructor Details

    • AbstractSequenceJsonProvider

      public AbstractSequenceJsonProvider()
  • Method Details

    • start

      public void start()
      Description copied from interface: JsonProvider
      Start the provider after all configuration properties are set.
      Specified by:
      start in interface JsonProvider<Event extends DeferredProcessingAware>
      Overrides:
      start in class AbstractJsonProvider<Event extends DeferredProcessingAware>
    • writeTo

      public void writeTo(JsonGenerator generator, Event event) throws IOException
      Description copied from interface: JsonProvider
      Writes information about the event, to the given generator.

      When called, the generator is assumed to be within a JSON object context (i.e. this provider should write fields and their values to the generator). Upon return, the generator should be within the same JSON object context.

      Parameters:
      generator - the JsonGenerator to produce JSON content
      event - the event to convert into JSON
      Throws:
      IOException - if an I/O error occurs
    • setSequenceProvider

      public void setSequenceProvider(Function<Event,Long> sequenceProvider)
      Assign a custom sequence provider instead of relying on the default.
      Parameters:
      sequenceProvider - the sequence provider to use to retrieve the sequence number for the event
    • getSequenceProvider

      public Function<Event,Long> getSequenceProvider()
      Get the sequence provider used to get the sequence number associated with the supplied event.
      Returns:
      a sequence provider
    • createSequenceProvider

      protected Function<Event,Long> createSequenceProvider()
      Create a default sequence provider depending on the current Logback version.

      With Logback 1.3 the sequence number is obtained for ILoggingEvent.getSequenceNumber() provided the LoggerContext is configured with a SequenceNumberGenerator (which is not by default). If no SequenceNumberGenerator is configured, the provider issues a warning and reverts to a locally generated incrementing number.

      With Logback versions prior to 1.3 the sequence number is generated locally by the provider itself.

      Returns:
      a sequence provider
    • createNativeSequenceNumberFieldAccessor

      protected abstract Function<Event,Long> createNativeSequenceNumberFieldAccessor()
      Get a function used to access the sequenceNumber field of the supplied event.
      Returns:
      a function used to access the sequenceNumber field of the supplied event.