# AsyncLogWriter

<a id="asynclogwriter"></a>

# AsyncLogWriter

```cpp
#include <icy/logger.h>

class AsyncLogWriter
```

[Defined in src/base/include/icy/logger.h:122](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L122)

> **Inherits:** [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter), [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable)

[Thread](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1) based log output stream writer.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`AsyncLogWriter`](#asynclogwriter-1) | `function` | Declared here |
| [`~AsyncLogWriter`](#asynclogwriter-2) | `function` | Declared here |
| [`write`](#write) | `function` | Declared here |
| [`flush`](#flush) | `function` | Declared here |
| [`run`](#run-2) | `function` | Declared here |
| [`clear`](#clear) | `function` | Declared here |
| [`_thread`](#_thread-1) | `variable` | Declared here |
| [`_pending`](#_pending) | `variable` | Declared here |
| [`_mutex`](#_mutex) | `variable` | Declared here |
| [`writeNext`](#writenext) | `function` | Declared here |
| [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter-1) | `function` | Inherited from [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter) |
| [`~LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter-2) | `function` | Inherited from [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#write-10) | `function` | Inherited from [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter) |
| [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-1) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`~Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-2) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancelled-3) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`exit`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#exit) | `variable` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |

## Inherited from [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter-1)  |  |
| `function` | [`~LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter-2) `virtual` |  |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#write-10) `virtual` | Writes the given log message stream. |

## Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-1) `inline` |  |
| `function` | [`~Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-2) `virtual` | Defaulted destructor. |
| `function` | [`run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) `virtual` | The run method will be called by the asynchronous context. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) `virtual` `inline` | Cancel the current task. The [run()](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) method should return ASAP. |
| `function` | [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancelled-3) `virtual` `const` `inline` | Returns true when the task has been cancelled. |
| `variable` | [`exit`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#exit)  |  |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`AsyncLogWriter`](#asynclogwriter-1)  |  |
|  | [`~AsyncLogWriter`](#asynclogwriter-2) `virtual` |  |
| `void` | [`write`](#write) `virtual` `override` | Queues the given log message stream. |
| `void` | [`flush`](#flush)  | Flushes queued messages. |
| `void` | [`run`](#run-2) `virtual` `override` | Writes queued messages asynchronously. |
| `void` | [`clear`](#clear)  | Clears all queued messages. |

---

<a id="asynclogwriter-1"></a>

### AsyncLogWriter

```cpp
AsyncLogWriter()
```

[Defined in src/base/include/icy/logger.h:126](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L126)

---

<a id="asynclogwriter-2"></a>

### ~AsyncLogWriter

`virtual`

```cpp
virtual ~AsyncLogWriter()
```

[Defined in src/base/include/icy/logger.h:127](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L127)

---

<a id="write"></a>

### write

`virtual` `override`

```cpp
virtual void write(std::unique_ptr< LogStream > stream) override
```

[Defined in src/base/include/icy/logger.h:130](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L130)

Queues the given log message stream.

#### Reimplements

- [`LogWriter::write`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#write-10)

---

<a id="flush"></a>

### flush

```cpp
void flush()
```

[Defined in src/base/include/icy/logger.h:133](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L133)

Flushes queued messages.

---

<a id="run-2"></a>

### run

`virtual` `override`

```cpp
virtual void run() override
```

[Defined in src/base/include/icy/logger.h:136](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L136)

Writes queued messages asynchronously.

#### Reimplements

- [`Runnable::run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11)

---

<a id="clear"></a>

### clear

```cpp
void clear()
```

[Defined in src/base/include/icy/logger.h:139](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L139)

Clears all queued messages.

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Thread`](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1) | [`_thread`](#_thread-1)  |  |
| std::deque< std::unique_ptr< [`LogStream`](https://auscaster.com/icey/docs/api-reference/icy-LogStream.md#logstream) > > | [`_pending`](#_pending)  |  |
| `std::mutex` | [`_mutex`](#_mutex)  |  |

---

<a id="_thread-1"></a>

### _thread

```cpp
Thread _thread
```

Type: [`Thread`](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1)

[Defined in src/base/include/icy/logger.h:144](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L144)

---

<a id="_pending"></a>

### _pending

```cpp
std::deque< std::unique_ptr< LogStream > > _pending
```

Type: std::deque< std::unique_ptr< [`LogStream`](https://auscaster.com/icey/docs/api-reference/icy-LogStream.md#logstream) > >

[Defined in src/base/include/icy/logger.h:145](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L145)

---

<a id="_mutex"></a>

### _mutex

```cpp
std::mutex _mutex
```

[Defined in src/base/include/icy/logger.h:146](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L146)

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`writeNext`](#writenext)  |  |

---

<a id="writenext"></a>

### writeNext

```cpp
bool writeNext()
```

[Defined in src/base/include/icy/logger.h:142](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L142)
