# Class OneLineFormatter

java.lang.Object
java.util.logging.Formatter
org.apache.juli.OneLineFormatter

Direct Known Subclasses:
  `JsonFormatter`

public class OneLineFormatter extends Formatter
Provides same information as default log format but on a single line to make it easier to grep the logs. The only exception is stacktraces which are always preceded by whitespace to make it simple to skip them.

## Constructor Summary

Constructors
Constructor
Description
`OneLineFormatter()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addTimestamp(StringBuilder buf, long timestamp)`
`String`
`format(LogRecord record)`
`protected static String`
`getThreadName(int logRecordThreadId)`
LogRecord has threadID but no thread name.
`String`
`getTimeFormat()`
Obtain the format currently being used for time stamps in log messages.
`protected String`
`resolveThreadName(LogRecord record)`
`void`
`setTimeFormat(String timeFormat)`
Specify the time format to use for time stamps in log messages.

### Methods inherited from class Formatter

`formatMessage, getHead, getTail`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### OneLineFormatter

public OneLineFormatter()

## Method Details

### setTimeFormat

public void setTimeFormat(String timeFormat)
Specify the time format to use for time stamps in log messages.

Parameters:
  `timeFormat` - The format to use using the `SimpleDateFormat` syntax

### getTimeFormat

public String getTimeFormat()
Obtain the format currently being used for time stamps in log messages.

Returns:
  The current format in `SimpleDateFormat` syntax

### format

public String format(LogRecord record)

Specified by:
  `format` in class `Formatter`

### resolveThreadName

protected String resolveThreadName(LogRecord record)

### addTimestamp

protected void addTimestamp(StringBuilder buf, long timestamp)

### getThreadName

protected static String getThreadName(int logRecordThreadId)
LogRecord has threadID but no thread name. LogRecord uses an int for thread ID but thread IDs are longs. If the real thread ID > (Integer.MAXVALUE / 2) LogRecord uses it's own ID in an effort to avoid clashes due to overflow.

Words fail me to describe what I think of the design decision to use an int in LogRecord for a long value and the resulting mess that follows.

Parameters:
  `logRecordThreadId` - the thread id
Returns:
  the thread name