home-assistant.github.io/components/system_log/index.html
2018-02-10 22:34:56 +00:00

307 lines
16 KiB
HTML

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>System Log - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Summary of errors and warnings in Home Assistant during runtime.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/system_log/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="System Log">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/system_log/">
<meta property="og:type" content="article">
<meta property="og:description" content="Summary of errors and warnings in Home Assistant during runtime.">
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@home_assistant">
<meta name="twitter:title" content="System Log">
<meta name="twitter:description" content="Summary of errors and warnings in Home Assistant during runtime.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
<link rel='shortcut icon' href='/images/favicon.ico' />
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
</head>
<body >
<header class='site-header'>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
<a href="/" class="site-title">
<img width='40' src='/demo/favicon-192x192.png'>
<span>Home Assistant</span>
</a>
</div>
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
<nav>
<input type="checkbox" id="toggle">
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
<ul class="menu pull-right">
<li><a href="/getting-started/">Getting started</a></li>
<li><a href="/components/">Components</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/cookbook/">Examples</a></li>
<li><a href="/developers/">Developers</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li>
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
</ul>
</nav>
<div class='search-container' style='display: none'>
<div class='search'>
<i class="icon-search"></i>
<input id='search' placeholder='Search the docs…'>
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
</div>
</div>
</div>
</div>
</div>
</header>
<div class="grid-wrapper">
<div class="grid grid-center">
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
<article class="page">
<header>
<h1 class="title indent">
System Log
</h1>
</header>
<hr class="divider">
<p>The <code class="highlighter-rouge">system_log</code> component stores information about all logged errors and warnings in Home Assistant. All collected information is accessible directly in the frontend, just navigate to the <code class="highlighter-rouge">Info</code> section under <code class="highlighter-rouge">Developer Tools</code>. 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 <code class="highlighter-rouge">max_entries</code>.</p>
<p>This component is automatically loaded by the <code class="highlighter-rouge">frontend</code> (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 <code class="highlighter-rouge">configuration.yaml</code> file:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">system_log</span><span class="pi">:</span>
<span class="s">max_entries</span><span class="pi">:</span> <span class="s">MAX_ENTRIES</span>
</code></pre>
</div>
<div class="config-vars">
<h3><a class="title-link" name="configuration-variables" href="#configuration-variables"></a> Configuration Variables</h3>
<dl class="">
<dt><a class="title-link" name="max_entries" href="#max_entries"></a> max_entries</dt>
<dd>
<p class="desc"><span class="type">(<span class="int">int</span>)</span><span class="required">(Optional)</span><span class="description">Number of entries to store (older entries are discarded).</span></p>
<p class="default">Default value: 50</p>
</dd>
</dl>
</div>
<h2><a class="title-link" name="services" href="#services"></a> Services</h2>
<h3><a class="title-link" name="service-clear" href="#service-clear"></a> Service <code class="highlighter-rouge">clear</code></h3>
<p>To manually clear the system log, call this service.</p>
<h2><a class="title-link" name="events" href="#events"></a> Events</h2>
<p>Errors and warnings are posted as the event <code class="highlighter-rouge">system_log_event</code>, so it is possible to write automations that trigger whenever a warning or error occurs. The following information is included in each event:</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">level</code></td>
<td>Either <code class="highlighter-rouge">WARNING</code> or <code class="highlighter-rouge">ERROR</code> depending on severity.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">source</code></td>
<td>File that triggered the error, e.g., <code class="highlighter-rouge">core.py</code> or <code class="highlighter-rouge">media_player/yamaha.py</code>.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">exception</code></td>
<td>Full stack trace if available, otherwise empty string.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">message</code></td>
<td>Descriptive message of the error, e.g., “Error handling request”.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">timestamp</code></td>
<td>Unix timestamp with as a double, e.g., 1517241010.237416.</td>
</tr>
</tbody>
</table>
<p>Live examples of these events can be found in the Home Assistant log file or by just looking in the system log. An example could, for instance, look like this:</p>
<p><img src="/images/components/system_log/system_log_entry.png" /></p>
<p>The message (“Unable to find service…”), source (<code class="highlighter-rouge">core.py</code>) and level (<code class="highlighter-rouge">WARNING</code>) can easily be extracted from the image. Exact timestamp and stack trace is shown if the entry is selected.</p>
<h2><a class="title-link" name="examples" href="#examples"></a> Examples</h2>
<p>Here are some examples using the events posted by <code class="highlighter-rouge">system_log</code>.</p>
<h3><a class="title-link" name="counting-number-of-warnings" href="#counting-number-of-warnings"></a> Counting Number of Warnings</h3>
<p>This will create a <code class="highlighter-rouge">counter</code> that increases every time a warning is logged:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">counter</span><span class="pi">:</span>
<span class="s">warning_counter</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Warnings</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:alert</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Count warnings</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">system_log_event</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">level</span><span class="pi">:</span> <span class="s">WARNING</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">counter.increment</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">counter.warning_counter</span>
</code></pre>
</div>
<h3><a class="title-link" name="conditional-messages" href="#conditional-messages"></a> Conditional Messages</h3>
<p>This automation will create a persistent notification whenever an error or warning is logged that has the word “service” in the message:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Create notifications for "service" errors</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">system_log_event</span>
<span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">template</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">"service"</span><span class="nv"> </span><span class="s">in</span><span class="nv"> </span><span class="s">trigger.event.data.message</span><span class="nv"> </span><span class="s">}}'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">persistent_notification.create</span>
<span class="s">data_template</span><span class="pi">:</span>
<span class="s">title</span><span class="pi">:</span> <span class="s">Something bad happened</span>
<span class="s">message</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">trigger.event.data.message</span><span class="nv"> </span><span class="s">}}'</span>
</code></pre>
</div>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
<div class="grid">
<section class="aside-module grid__item one-whole lap-one-half">
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/system_log.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/home-assistant.png' />
</div>
<div class='section'>
Introduced in release: 0.58
</div>
<div class='section'>
<h1 class="title delta">Category Other</h1>
<ul class='divided'>
<li>
<a href='/components/api/'>API</a>
</li>
<li>
<a href='/components/asterisk_mbox/'>Asterisk Voicemail</a>
</li>
<li>
<a href='/components/configurator/'>Configurator</a>
</li>
<li>
<a href='/components/demo/'>Demo platforms</a>
</li>
<li>
<a href='/components/discovery/'>Discovery</a>
</li>
<li>
<a href='/components/dominos/'>Dominos Pizza</a>
</li>
<li>
<a href='/components/feedreader/'>Feedreader</a>
</li>
<li>
<a href='/components/frontend/'>Frontend</a>
</li>
<li>
<a href='/components/goalfeed/'>Goalfeed</a>
</li>
<li>
<a href='/components/http/'>HTTP</a>
</li>
<li>
<a href='/components/introduction/'>Introduction</a>
</li>
<li>
<a href='/components/keyboard_remote/'>Keyboard Remote</a>
</li>
<li>
<a href='/components/mqtt_eventstream/'>MQTT Eventstream</a>
</li>
<li>
<a href='/components/mqtt_statestream/'>MQTT Statestream</a>
</li>
<li>
<a href='/components/map/'>Map</a>
</li>
<li>
<a href='/components/persistent_notification/'>Persistent notification</a>
</li>
<li>
<a href='/components/plant/'>Plant monitor</a>
</li>
<li>
System Log
</li>
<li>
<a href='/components/sensor.upnp/'>UPNP Sensor</a>
</li>
<li>
<a href='/components/upnp/'>UPnP</a>
</li>
<li>
<a href='/components/updater/'>Updater</a>
</li>
<li>
<a href='/components/websocket_api/'>Websocket API</a>
</li>
<li>
<a href='/components/zeroconf/'>Zeroconf/Avahi/Bonjour</a>
</li>
</ul>
</div>
</section>
</div>
</aside>
</div>
</div>
<footer>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item">
<div class="copyright">
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
<div class="credit">
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
</div>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
</div>
</div>
</div>
</div>
</footer>
<script>
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
<script type="text/javascript">
docsearch({
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
indexName: 'home-assistant',
inputSelector: '#search',
debug: false // Set debug to true if you want to inspect the dropdown
});
document.querySelector('.search .close').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'none';
});
document.querySelector('.show-search').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'block';
document.getElementById('toggle').checked = false;
document.querySelector('.search-container input').focus();
});
</script>
</body>
</html>