Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.rabbitmq.tools
Class Tracer.AsyncLogger

    java.lang.Object
      com.rabbitmq.tools.Tracer.AsyncLogger

All Implemented Interfaces:
  Tracer.Logger

Enclosing class:
  Tracer

    public static class Tracer.AsyncLogger

extends java.lang.Object
implements Tracer.Logger

A `Tracer.Logger` designed to print `String`s to a designated `OutputStream` on a private thread.

`String`s are read from a private queue and printed to a buffered `PrintStream` which is periodically flushed.

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(String)` never blocks unless the private queue is full; this may never un-block if the `Tracer.Logger` is stopped.

Constructor Summary
`Tracer.AsyncLogger(java.io.OutputStream os)` Same as `Tracer.AsyncLogger(OutputStream, int)` with a one-second flush interval.
`Tracer.AsyncLogger(java.io.OutputStream os, int flushInterval)` Start/stoppable logger that prints to an `OutputStream` with flushes every `flushInterval` milliseconds.

Method Summary
`void` | `log(java.lang.String message)` Write msg to the log.
`boolean` | `start()` Start logging, that is, printing log entries written using `Tracer.Logger.log(String)`.
`boolean` | `stop()` Stop logging, that is, stop printing log entries written using `Tracer.Logger.log(String)`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Tracer.AsyncLogger

    public Tracer.AsyncLogger(java.io.OutputStream os)

  Same as `Tracer.AsyncLogger(OutputStream, int)` with a one-second flush interval.

  Parameters:
    `os` - OutputStream to print to.

### Tracer.AsyncLogger

    public Tracer.AsyncLogger(java.io.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.

Method Detail

### log

    public void log(java.lang.String message)

  Description copied from interface: `Tracer.Logger`
  Write msg to the log. This may block, and may block indefinitely if the logger is stopped.

  Specified by:
    `log` in interface `Tracer.Logger`

### start

    public boolean start()

  Description copied from interface: `Tracer.Logger`
  Start logging, that is, printing log entries written using `Tracer.Logger.log(String)`. Multiple successive starts are equivalent to a single start.

  Specified by:
    `start` in interface `Tracer.Logger`
  Returns:
    `true` if start actually started the logger; `false` otherwise.

### stop

    public boolean stop()

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

  Specified by:
    `stop` in interface `Tracer.Logger`
  Returns:
    `true` if stop actually stopped the logger; `false` otherwise.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD