XI. Logy
S logy zacházejte jako s proudy událostí.
Logy poskytují náhled na chování běžící aplikace. V prostředí serveru se obvykle zapisují do souboru na disku (“logfile”), ale to je jen výstupní formát.
Logy jsou proudy agregovaných a časově seřazených událostí, posbíraných z výstupních proudů všech běžících procesů a podpůrných služeb. Logy jsou ve své syrové formě typicky v textovém formátu s jednou událostí na řádek (avšak výpis výjimky může zabírat i více řádků). Logy nemají žádný pevný začátek ani konec, ale plynule proudí po celou dobu běhu aplikace.
Twelve-factor aplikace se nikdy nestará o routování anebo ukládání svého výstupního proudu. Neměla by se ani pokoušet zapisovat nebo si spravovat své log soubory. Místo toho zapisuje každy její běžící proces nebufferovaně na stdout
. Během lokálního vývoje vidí vývojář proud událostí ve svém terminálu a sleduje chování aplikace.
V testovacím a produkčním prostředí je proud každého procesu zachycen běhovým prostředím, spojen s ostatnímy proudy aplikace a nasměrován do jedné nebo více cílových destinací, určených pro zobrazení nebo k dlouhodobé archivaci logů. Tyto cílové destinace nejsou pro aplikaci viditelné ani konfigurovatelné, jejich správa je plně pod kontrolou běhového prostředí. Open source směrovače logů (jako jsou Logplex a Fluentd slouží přesně k těmto účelům.
Proudy událostí aplikace mohou být směrovány do souboru, nebo sledovány v reálněm čase přes tail v terminálu. Důležitější však je, že tyto proudy mohou být zaslány do systému na indexaci a analýzu logů, jako je například Splunk anebo do univerzálnějších systémů pro datové sklady jako je Hadoop/Hive. Tyto systémy jsou flexibilní a velmi mocné, chceme-li zkoumát chování aplikace v průběhu času, například při:
- Hledání konkrétních událostí v minulosti.
- Velkoplošném vykreslení trendů (požadavky za minutu) do grafu.
- Aktivním alertingu dle uživatelsky definovaných heuristik (například pokud množství chyb za minutu přesáhne stanovenou hranici).