# Handler

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Protected Ctors](https://developer.android.com/reference/java/util/logging/Handler#proctors)\|[Methods](https://developer.android.com/reference/java/util/logging/Handler#pubmethods)\|[Protected Methods](https://developer.android.com/reference/java/util/logging/Handler#promethods)\|[Inherited Methods](https://developer.android.com/reference/java/util/logging/Handler#inhmethods)  

# Handler

`
public


abstract
class
Handler
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|---------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.util.logging.Handler |

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known direct subclasses [MemoryHandler](https://developer.android.com/reference/java/util/logging/MemoryHandler),[StreamHandler](https://developer.android.com/reference/java/util/logging/StreamHandler) |------------------------------------------------------------------------------------------|--------------------------------------------------------------| | [MemoryHandler](https://developer.android.com/reference/java/util/logging/MemoryHandler) | Handlerthat buffers requests in a circular buffer in memory. | | [StreamHandler](https://developer.android.com/reference/java/util/logging/StreamHandler) | Stream based loggingHandler.                                 | |

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known indirect subclasses [ConsoleHandler](https://developer.android.com/reference/java/util/logging/ConsoleHandler),[FileHandler](https://developer.android.com/reference/java/util/logging/FileHandler),[SocketHandler](https://developer.android.com/reference/java/util/logging/SocketHandler) |--------------------------------------------------------------------------------------------|------------------------------------------------| | [ConsoleHandler](https://developer.android.com/reference/java/util/logging/ConsoleHandler) | ThisHandlerpublishes log records toSystem.err. | | [FileHandler](https://developer.android.com/reference/java/util/logging/FileHandler)       | Simple file loggingHandler.                    | | [SocketHandler](https://developer.android.com/reference/java/util/logging/SocketHandler)   | Simple network loggingHandler.                 | |

<br />

*** ** * ** ***

AHandlerobject takes log messages from aLoggerand exports them. It might for example, write them to a console or write them to a file, or send them to a network logging service, or forward them to an OS log, or whatever.

AHandlercan be disabled by doing asetLevel(Level.OFF)and can be re-enabled by doing asetLevelwith an appropriate level.

Handlerclasses typically useLogManagerproperties to set default values for theHandler'sFilter,Formatter, andLevel. See the specific documentation for each concreteHandlerclass.

## Summary

|                                               ### Protected constructors                                               ||
|---------------------------------------------------------------------------------------------------------------------|---|
| ` `[Handler](https://developer.android.com/reference/java/util/logging/Handler#Handler())`() ` Default constructor. |

|                                                                                                                                                                                   ### Public methods                                                                                                                                                                                   ||
|-------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract void`                                                                          | ` `[close](https://developer.android.com/reference/java/util/logging/Handler#close())`() ` Close theHandlerand free all associated resources.                                                                                                                                               |
| ` abstract void`                                                                          | ` `[flush](https://developer.android.com/reference/java/util/logging/Handler#flush())`() ` Flush any buffered output.                                                                                                                                                                       |
| ` `[String](https://developer.android.com/reference/java/lang/String)                     | ` `[getEncoding](https://developer.android.com/reference/java/util/logging/Handler#getEncoding())`() ` Return the character encoding for thisHandler.                                                                                                                                       |
| ` `[ErrorManager](https://developer.android.com/reference/java/util/logging/ErrorManager) | ` `[getErrorManager](https://developer.android.com/reference/java/util/logging/Handler#getErrorManager())`() ` Retrieves the ErrorManager for this Handler.                                                                                                                                 |
| ` `[Filter](https://developer.android.com/reference/java/util/logging/Filter)             | ` `[getFilter](https://developer.android.com/reference/java/util/logging/Handler#getFilter())`() ` Get the currentFilterfor thisHandler.                                                                                                                                                    |
| ` `[Formatter](https://developer.android.com/reference/java/util/logging/Formatter)       | ` `[getFormatter](https://developer.android.com/reference/java/util/logging/Handler#getFormatter())`() ` Return theFormatterfor thisHandler.                                                                                                                                                |
| ` `[Level](https://developer.android.com/reference/java/util/logging/Level)               | ` `[getLevel](https://developer.android.com/reference/java/util/logging/Handler#getLevel())`() ` Get the log level specifying which messages will be logged by thisHandler.                                                                                                                 |
| ` boolean`                                                                                | ` `[isLoggable](https://developer.android.com/reference/java/util/logging/Handler#isLoggable(java.util.logging.LogRecord))`(`[LogRecord](https://developer.android.com/reference/java/util/logging/LogRecord)` record) ` Check if thisHandlerwould actually log a givenLogRecord.           |
| ` abstract void`                                                                          | ` `[publish](https://developer.android.com/reference/java/util/logging/Handler#publish(java.util.logging.LogRecord))`(`[LogRecord](https://developer.android.com/reference/java/util/logging/LogRecord)` record) ` Publish aLogRecord.                                                      |
| ` void`                                                                                   | ` `[setEncoding](https://developer.android.com/reference/java/util/logging/Handler#setEncoding(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` encoding) ` Set the character encoding used by thisHandler.                                         |
| ` void`                                                                                   | ` `[setErrorManager](https://developer.android.com/reference/java/util/logging/Handler#setErrorManager(java.util.logging.ErrorManager))`(`[ErrorManager](https://developer.android.com/reference/java/util/logging/ErrorManager)` em) ` Define an ErrorManager for this Handler.            |
| ` void`                                                                                   | ` `[setFilter](https://developer.android.com/reference/java/util/logging/Handler#setFilter(java.util.logging.Filter))`(`[Filter](https://developer.android.com/reference/java/util/logging/Filter)` newFilter) ` Set aFilterto control output on thisHandler.                               |
| ` void`                                                                                   | ` `[setFormatter](https://developer.android.com/reference/java/util/logging/Handler#setFormatter(java.util.logging.Formatter))`(`[Formatter](https://developer.android.com/reference/java/util/logging/Formatter)` newFormatter) ` Set aFormatter.                                          |
| ` void`                                                                                   | ` `[setLevel](https://developer.android.com/reference/java/util/logging/Handler#setLevel(java.util.logging.Level))`(`[Level](https://developer.android.com/reference/java/util/logging/Level)` newLevel) ` Set the log level specifying which message levels will be logged by thisHandler. |

|                                                                                                                                                                                             ### Protected methods                                                                                                                                                                                              ||
|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` void` | ` `[reportError](https://developer.android.com/reference/java/util/logging/Handler#reportError(java.lang.String,%20java.lang.Exception,%20int))`(`[String](https://developer.android.com/reference/java/lang/String)` msg, `[Exception](https://developer.android.com/reference/java/lang/Exception)` ex, int code) ` Protected convenience method to report an error to this Handler's ErrorManager. |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||

## Protected constructors

### Handler

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
protected Handler ()
```

Default constructor. The resultingHandlerhas a log level ofLevel.ALL, noFormatter, and noFilter. A defaultErrorManagerinstance is installed as theErrorManager.

<br />

## Public methods

### close

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract void close ()
```

Close theHandlerand free all associated resources.

The close method will perform aflushand then close theHandler. After close has been called thisHandlershould no longer be used. Method calls may either be silently ignored or may throw runtime exceptions.

<br />

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and if the caller does not haveLoggingPermission("control"). |

### flush

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract void flush ()
```

Flush any buffered output.

<br />

### getEncoding

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public String getEncoding ()
```

Return the character encoding for thisHandler.

<br />

|                                                                             Returns                                                                             ||
|--------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
| [String](https://developer.android.com/reference/java/lang/String) | The encoding name. May be null, which indicates the default encoding should be used. <br /> |

### getErrorManager

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ErrorManager getErrorManager ()
```

Retrieves the ErrorManager for this Handler.

<br />

|                                                             Returns                                                              ||
|----------------------------------------------------------------------------------------|------------------------------------------|
| [ErrorManager](https://developer.android.com/reference/java/util/logging/ErrorManager) | the ErrorManager for this Handler <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and if the caller does not haveLoggingPermission("control"). |

### getFilter

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public Filter getFilter ()
```

Get the currentFilterfor thisHandler.

<br />

|                                                    Returns                                                     ||
|----------------------------------------------------------------------------|------------------------------------|
| [Filter](https://developer.android.com/reference/java/util/logging/Filter) | aFilterobject (may be null) <br /> |

### getFormatter

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public Formatter getFormatter ()
```

Return theFormatterfor thisHandler.

<br />

|                                                       Returns                                                       ||
|----------------------------------------------------------------------------------|-----------------------------------|
| [Formatter](https://developer.android.com/reference/java/util/logging/Formatter) | theFormatter(may be null). <br /> |

### getLevel

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public Level getLevel ()
```

Get the log level specifying which messages will be logged by thisHandler. Message levels lower than this level will be discarded.

<br />

|                                                       Returns                                                        ||
|--------------------------------------------------------------------------|--------------------------------------------|
| [Level](https://developer.android.com/reference/java/util/logging/Level) | the level of messages being logged. <br /> |

### isLoggable

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public boolean isLoggable (LogRecord record)
```

Check if thisHandlerwould actually log a givenLogRecord.

This method checks if theLogRecordhas an appropriateLeveland whether it satisfies anyFilter. It also may make otherHandlerspecific checks that might prevent a handler from logging theLogRecord. It will return false if theLogRecordis null.

<br />

<br />

|                Parameters                ||
|----------|--------------------------------|
| `record` | `LogRecord`: aLogRecord <br /> |

|                        Returns                         ||
|-----------|---------------------------------------------|
| `boolean` | true if theLogRecordwould be logged. <br /> |

### publish

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract void publish (LogRecord record)
```

Publish aLogRecord.

The logging request was made initially to aLoggerobject, which initialized theLogRecordand forwarded it here.

TheHandleris responsible for formatting the message, when and if necessary. The formatting should include localization.

<br />

|                                                     Parameters                                                     ||
|----------|----------------------------------------------------------------------------------------------------------|
| `record` | `LogRecord`: description of the log event. A null record is silently ignored and is not published <br /> |

### setEncoding

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void setEncoding (String encoding)
```

Set the character encoding used by thisHandler.

The encoding should be set before anyLogRecordsare written to theHandler.

<br />

|                                                            Parameters                                                            ||
|------------|----------------------------------------------------------------------------------------------------------------------|
| `encoding` | `String`: The name of a supported character encoding. May be null, to indicate the default platform encoding. <br /> |

|                                                                                                 Throws                                                                                                  ||
|--------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException)                     | if a security manager exists and if the caller does not haveLoggingPermission("control"). |
| [UnsupportedEncodingException](https://developer.android.com/reference/java/io/UnsupportedEncodingException) | if the named encoding is not supported.                                                   |

### setErrorManager

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void setErrorManager (ErrorManager em)
```

Define an ErrorManager for this Handler.

The ErrorManager's "error" method will be invoked if any errors occur while using this Handler.

<br />

|                    Parameters                     ||
|------|---------------------------------------------|
| `em` | `ErrorManager`: the new ErrorManager <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and if the caller does not haveLoggingPermission("control"). |

### setFilter

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void setFilter (Filter newFilter)
```

Set aFilterto control output on thisHandler.

For each call ofpublishtheHandlerwill call thisFilter(if it is non-null) to check if theLogRecordshould be published or discarded.

<br />

|                        Parameters                         ||
|-------------|----------------------------------------------|
| `newFilter` | `Filter`: aFilterobject (may be null) <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and if the caller does not haveLoggingPermission("control"). |

### setFormatter

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void setFormatter (Formatter newFormatter)
```

Set aFormatter. ThisFormatterwill be used to formatLogRecordsfor thisHandler.

SomeHandlersmay not useFormatters, in which case theFormatterwill be remembered, but not used.

<br />

<br />

|                                Parameters                                ||
|----------------|----------------------------------------------------------|
| `newFormatter` | `Formatter`: theFormatterto use (may not be null) <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and if the caller does not haveLoggingPermission("control"). |

### setLevel

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void setLevel (Level newLevel)
```

Set the log level specifying which message levels will be logged by thisHandler. Message levels lower than this value will be discarded.

The intention is to allow developers to turn on voluminous logging, but to limit the messages that are sent to certainHandlers.

<br />

|                         Parameters                          ||
|------------|-------------------------------------------------|
| `newLevel` | `Level`: the new value for the log level <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and if the caller does not haveLoggingPermission("control"). |

## Protected methods

### reportError

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
protected void reportError (String msg, 
                Exception ex, 
                int code)
```

Protected convenience method to report an error to this Handler's ErrorManager. Note that this method retrieves and uses the ErrorManager without doing a security check. It can therefore be used in environments where the caller may be non-privileged.

<br />

|                         Parameters                          ||
|--------|-----------------------------------------------------|
| `msg`  | `String`: a descriptive string (may be null) <br /> |
| `ex`   | `Exception`: an exception (may be null) <br />      |
| `code` | `int`: an error code defined in ErrorManager <br /> |