mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-05-01 08:47:35 +00:00
146 lines
5.2 KiB
Markdown
146 lines
5.2 KiB
Markdown
---
|
|
title: System Log
|
|
description: Summary of errors and warnings in Home Assistant during runtime.
|
|
ha_category:
|
|
- Other
|
|
ha_release: 0.58
|
|
ha_quality_scale: internal
|
|
ha_domain: system_log
|
|
ha_integration_type: system
|
|
---
|
|
|
|
The `system_log` integration stores information about all logged errors and warnings in Home Assistant. To view your logs, navigate to **Settings** -> **System** -> **Logs**. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the number of stored log entries using the parameter `max_entries`.
|
|
|
|
## Configuration
|
|
|
|
This integration is automatically loaded by the `frontend` (so no need to do anything if you are using the frontend). If you are not doing so, or if you wish to change a parameter, add the following section to your `configuration.yaml` file:
|
|
|
|
```yaml
|
|
system_log:
|
|
max_entries: MAX_ENTRIES
|
|
```
|
|
|
|
{% configuration %}
|
|
max_entries:
|
|
description: Number of entries to store (older entries are discarded).
|
|
required: false
|
|
type: integer
|
|
default: 50
|
|
fire_event:
|
|
description: Whether events are fired (required when used for triggers).
|
|
required: false
|
|
type: string
|
|
default: false
|
|
{% endconfiguration %}
|
|
|
|
## Services
|
|
|
|
### Service `clear`
|
|
|
|
To manually clear the system log, call this service.
|
|
|
|
### Service `write`
|
|
|
|
Write a log entry
|
|
|
|
| Service data attribute | Optional | Description |
|
|
| ---------------------- | -------- | ------------------------------------------------------------------------------- |
|
|
| `message` | no | Message to log |
|
|
| `level` | yes | Log level: debug, info, warning, error, critical. Defaults to 'error'. |
|
|
| `logger` | yes | Logger name under which to log the message. Defaults to 'system_log.external'. |
|
|
|
|
## Events
|
|
|
|
Errors and warnings are posted as the event `system_log_event`, so it is possible to write automations that trigger whenever a warning or error occurs. The following information is included in each event:
|
|
|
|
| Field | Description |
|
|
|-------------|-----------------------------------------------------------------------------|
|
|
| `level` | Either `WARNING` or `ERROR` depending on severity. |
|
|
| `source` | File that triggered the error, e.g., `core.py` or `media_player/yamaha.py`. |
|
|
| `exception` | Full stack trace if available, an empty string otherwise. |
|
|
| `message` | Descriptive message of the error, e.g., "Error handling request". |
|
|
| `name` | Name of the component, e.g., `homeassistant.components.device_tracker` |
|
|
| `timestamp` | Unix timestamp with as a double, e.g., 1517241010.237416. |
|
|
|
|
Live examples of these events can be found in the Home Assistant log file (`home-assistant.log`) or by just looking in the system log. An example could, for instance, look like this:
|
|
|
|
```text
|
|
2019-02-14 16:20:35 ERROR (MainThread) [homeassistant.loader] Unable to find integration system_healt
|
|
2019-02-14 16:20:36 ERROR (MainThread) [homeassistant.components.device_tracker] Error setting up platform google_maps
|
|
Traceback (most recent call last):
|
|
File "/home/fab/Documents/repos/ha/home-assistant/homeassistant/integrations/device_tracker/__init__.py", line 184, in
|
|
[...]
|
|
```
|
|
|
|
The message ("Unable to find integration system_healt"), name (`homeassistant.loader`) and level (`ERROR`) can easily be extracted from the log. The exact timestamp and if there is a stack trace that's shown as well.
|
|
|
|
## Examples
|
|
|
|
Here are some examples using the events posted by `system_log`. `fire_event` must be set to `true` for these to work.
|
|
|
|
### Counting Number of Warnings
|
|
|
|
This will create a `counter` that increases every time a warning is logged:
|
|
|
|
```yaml
|
|
counter:
|
|
warning_counter:
|
|
name: Warnings
|
|
icon: mdi:alert
|
|
|
|
automation:
|
|
- alias: "Count warnings"
|
|
trigger:
|
|
platform: event
|
|
event_type: system_log_event
|
|
event_data:
|
|
level: WARNING
|
|
action:
|
|
service: counter.increment
|
|
target:
|
|
entity_id: counter.warning_counter
|
|
```
|
|
|
|
### Conditional Messages
|
|
|
|
This automation will create a persistent notification whenever an error or warning is logged that has the word "service" in the message:
|
|
|
|
{% raw %}
|
|
|
|
```yaml
|
|
automation:
|
|
- alias: "Create notifications for "service" errors"
|
|
trigger:
|
|
platform: event
|
|
event_type: system_log_event
|
|
condition:
|
|
condition: template
|
|
value_template: '{{ "service" in trigger.event.data.message[0] }}'
|
|
action:
|
|
service: persistent_notification.create
|
|
data:
|
|
title: Something bad happened
|
|
message: "{{ trigger.event.data.message }}"
|
|
```
|
|
|
|
{% endraw %}
|
|
|
|
### Writing to log
|
|
|
|
This automation will create a new log entry when the door is opened:
|
|
|
|
```yaml
|
|
automation:
|
|
- alias: "Log door opened"
|
|
trigger:
|
|
platform: state
|
|
entity_id: binary_sensor.door
|
|
from: "off"
|
|
to: "on"
|
|
action:
|
|
service: system_log.write
|
|
data:
|
|
message: "Door opened!"
|
|
level: info
|
|
```
|