public static class

Tracer.AsyncLogger

extends Object
implements Tracer.Logger
java.lang.Object
   ↳ com.rabbitmq.tools.Tracer.AsyncLogger

Class Overview

A Tracer.Logger designed to print Strings to a designated OutputStream on a private thread.

Strings are read from a private queue and printed to a buffered PrintStream which is periodically flushed, determined by a #flushInterval.

When instantiated the private queue is created (an in-memory ArrayBlockingQueue in this implementation) and when start()ed the private thread is created and started unless it is already present. An Tracer.AsyncLogger may be started many times, but only one thread is created.

When stop()ed either the number of starts is decremented, or, if this count reaches zero, a special element is queued which causes the private thread to end when encountered.

If the private thread is interrupted, the thread will also end, and the count set to zero, This will cause subsequent stop()s to be ignored, and the next start() will create a new thread.

#log() never blocks unless the private queue is full; this may never un-block if the Tracer.Logger is stopped.

Summary

Public Constructors
Tracer.AsyncLogger(OutputStream os)
Same as #AsyncLogger(os, flushInterval) with a one-second flush interval.
Tracer.AsyncLogger(OutputStream os, int flushInterval)
Start/stoppable logger that prints to an OutputStream with flushes every flushInterval milliseconds.
Public Methods
void log(String message)
Write msg to the log.
boolean start()
Start logging, that is, printing log entries written using log(String).
boolean stop()
Stop logging, that is, stop printing log entries written using log(String).
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.rabbitmq.tools.Tracer.Logger

Public Constructors

public Tracer.AsyncLogger (OutputStream os)

Same as #AsyncLogger(os, flushInterval) with a one-second flush interval.

Parameters
os OutputStream to print to.

public Tracer.AsyncLogger (OutputStream os, int flushInterval)

Start/stoppable logger that prints to an OutputStream with flushes every flushInterval milliseconds.

Parameters
os OutputStream to print to.
flushInterval in milliseconds, time between flushes.

Public Methods

public void log (String message)

Write msg to the log. This may block, and may block indefinitely if the logger is stopped.

public boolean start ()

Start logging, that is, printing log entries written using log(String). Multiple successive starts are equivalent to a single start.

Returns
  • true if start actually started the logger; false otherwise.

public boolean stop ()

Stop logging, that is, stop printing log entries written using log(String). Flush preceding writes. The logger can only be stopped if started. Multiple successive stops are equivalent to a single stop.

Returns
  • true if stop actually stopped the logger; false otherwise.