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.

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.

      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.