====== Pojem Log ====== Log (česky záznam, protokol) je **textový soubor nebo výstup**, který zaznamenává události, chyby, varování a další informace o chodu aplikace, systému nebo programu. ===== Co je log ===== Log slouží k: * **Sledování chování** aplikace v reálném čase * **Debugování** - hledání a oprava chyb * **Auditování** - kdo, kdy a co provedl * **Monitorování** výkonu a stavu systému * **Analýze** problémů, které se staly v minulosti ===== Kde se s logy setkáme ===== ==== Webový vývoj ==== **1. Konzole prohlížeče (Browser Console)** V JavaScriptu se logy vypisují pomocí ''console'' objektu: console.log('Základní zpráva'); // Běžná informace console.info('Informativní zpráva'); // Info console.warn('Varování'); // Varování (žlutě) console.error('Chyba!'); // Chyba (červeně) console.debug('Debug info'); // Debug informace // Logování proměnných let jmeno = 'Jan'; let vek = 25; console.log('Uživatel:', jmeno, 'Věk:', vek); // Logování objektů let osoba = {jmeno: 'Jan', vek: 25}; console.log(osoba); // Vypíše celý objekt console.table(osoba); // Vypíše jako tabulku **Jak otevřít konzoli prohlížeče:** * **Chrome/Edge:** F12 nebo Ctrl+Shift+I → záložka Console * **Firefox:** F12 nebo Ctrl+Shift+K * **Safari:** Cmd+Option+C (macOS) ==== Serverový vývoj ==== **Node.js (JavaScript na serveru):** console.log('Server běží na portu 3000'); console.error('Nepodařilo se připojit k databázi'); **PHP:** error_log("Chyba při zpracování požadavku"); echo "Ladící výpis: " . $promenna; **Python:** import logging logging.info("Aplikace spuštěna") logging.warning("Nedostatečná paměť") logging.error("Kritická chyba!") ==== Systémové logy ==== Operační systémy zapisují logy do speciálních souborů: **Linux/Unix:** * ''/var/log/syslog'' - hlavní systémový log * ''/var/log/apache2/error.log'' - chyby webového serveru * ''/var/log/auth.log'' - přihlášení uživatelů **Windows:** * Event Viewer (Prohlížeč událostí) * Aplikační logy, systémové logy, bezpečnostní logy ===== Úrovně logování ===== Logy mají různé **úrovně závažnosti** (od nejméně po nejvíce závažné): ^ Úroveň ^ Popis ^ Použití ^ | **TRACE** | Velmi detailní info | Hloubkové ladění | | **DEBUG** | Ladící informace | Vývoj a testování | | **INFO** | Běžné informace | Důležité události | | **WARN** | Varování | Potenciální problémy | | **ERROR** | Chyby | Chyby, které aplikace zvládne | | **FATAL** | Kritické chyby | Pád aplikace | ===== Příklad logu ===== Typický formát logové zprávy: [2026-01-06 14:23:15] [INFO] Server spuštěn na portu 3000 [2026-01-06 14:23:47] [DEBUG] Načítám data z databáze... [2026-01-06 14:23:48] [INFO] Uživatel 'jan.novak' se přihlásil [2026-01-06 14:24:12] [WARN] Pomalý dotaz do databáze (2.3s) [2026-01-06 14:25:03] [ERROR] Nepodařilo se odeslat email: Connection timeout [2026-01-06 14:25:05] [INFO] Pokus o opětovné odeslání emailu... Každý řádek obvykle obsahuje: * **Časové razítko** - kdy se událost stala * **Úroveň** - jak závažná je zpráva * **Zpráva** - popis události * Volitelně: **zdroj** (modul, funkce), **uživatel**, **IP adresa** ===== Praktický příklad v JavaScriptu ===== // Funkce pro přihlášení uživatele function prihlasit(email, heslo) { console.log(`[${new Date().toISOString()}] Pokus o přihlášení: ${email}`); if (!email || !heslo) { console.error('Chyba: Email nebo heslo je prázdné'); return false; } try { // Simulace ověření if (heslo.length < 6) { console.warn('Varování: Příliš krátké heslo'); } // Úspěšné přihlášení console.log(`✓ Uživatel ${email} úspěšně přihlášen`); console.info('Session ID:', Math.random().toString(36)); return true; } catch (error) { console.error('Kritická chyba při přihlášení:', error); return false; } } // Použití prihlasit('jan@email.cz', 'heslo123'); **Výstup v konzoli:** [2026-01-06T13:23:15.123Z] Pokus o přihlášení: jan@email.cz Varování: Příliš krátké heslo ✓ Uživatel jan@email.cz úspěšně přihlášen Session ID: 8k2j9f3h1s ===== Doporučené praktiky ===== * **Během vývoje:** Používejte hodně logů pro pochopení toku programu * **V produkci:** Logujte jen důležité události, chyby a varování * **Nelogujte citlivá data:** hesla, čísla kreditních karet, osobní údaje * **Používejte správné úrovně:** ERROR pro chyby, INFO pro běžné události * **Strukturujte zprávy:** Konzistentní formát usnadňuje čtení a zpracování * **Rotujte logy:** Staré logy archivujte nebo mažte (šetří místo na disku) ===== Nástroje pro práci s logy ===== * **Prohlížeč:** DevTools Console * **Textové editory:** Pro čtení log souborů * **grep (Linux):** Vyhledávání v logech: ''grep ERROR app.log'' * **Logování knihovny:** Winston (Node.js), Log4j (Java), Monolog (PHP) * **Monitoring služby:** Sentry, LogRocket, Datadog - sledují logy v reálném čase * **ELK Stack:** Elasticsearch + Logstash + Kibana - pro pokročilou analýzu ===== Shrnutí ===== Log je **záznam toho, co se děje v aplikaci**. Je to jako deník programu, který vývojářům pomáhá: * Pochopit, jak program funguje * Najít a opravit chyby * Sledovat, co uživatelé dělají * Analyzovat problémy, které se staly v minulosti Každý programátor by měl umět logy používat - jsou to oči a uši do běžící aplikace.