[addon logger] Logger
- Honza Kuchař
- Člen | 1662
Diskuse ke stránce Logger
Ahoj,
nápady co dál: :)
- Vytvářet nový soubor, pokud se přesáhne určitá velikost. (teď můžu udělat přes callback)
- Možnost posílat logy e-mailem? (teď můžu také udělat přes callback)
- Panda
- Člen | 569
- Vyhovovalo by chování podobné archivaci z
logrotate
? Tedy název nejaktuálnějšího souboru by přesně odpovídal masce, druhý nejaktuálnější by měl na konci názvu (popř. před příponou).1
, třetí nejaktuálnější.2
, … - Jak přesně si to představuješ? Posílat vždy záznamy z jednoho požadavku jako samostatný e-mail? Nebo až po konci období při vytvoření nového souboru?
Editoval Panda (17. 1. 2010 19:43)
- maarlin
- Člen | 207
Osobně Logger používám tak, že mám nastaveno střádání do denních logů (log-2010–01–19.log), přičemž na serveru vždy zanechávám posledních 7 logů (bez ohledu na jejich název nebo datum vytvoření/změny), protože může nastat třeba situace, kdy nevznikne žádná logovací událost a tedy log pro ten den nevznikne.
Za sebe mám tedy následující feature requests:
- zasílání logů mailem (vázané vždy na konkrétní úroveň, např. = ALERT nebo všechny závažnější, než INFO, NOTICE a DEBUG)
- automatické mazání, nebo/a archivace starých logů a nějaká odpovídající nastavení k tomu
- logrotate by byl asi taky fajn, návrh na pojmenování je dobrý
- Panda
- Člen | 569
Hm, taková nastavení, aby to bylo dobře použitelné v různých situacích, by byla dost nepřehledná a nepochopitelná… Co by jste říkali možnosti nastavovat pravidla ve stylu validačních pravidel formulářů?
Zápis bych si představoval asi takto:
// Posílat zprávy s prioritou ALERT a vážnější na e-mail somebody@somewhere.net
$logger->addCondition(Logger::MESSAGE_PRIORITY, ILogger::ALERT)
->addRule(Logger::EMAIL, 'somebody@somewhere.net', 'An error has ocurred');
// Rotace starých souborů - ponechání posledních 7 logů
// (log, log.1, log.2, ..., log.6)
// + GZIP
$logger->addCondition(LoggerFileDriver::LOG_FILE_SIZE, 5 * LoggerFileDriver::MB)
->addRule(LoggerFileDriver::LOGROTATE, 7, LoggerFileDriver::GZIP);
// Rotace starých souborů po 3 dnech, ponechání všeho
// + BZIP2
// alternativní zápis
$logger->addCondition(LoggerFileDriver::LOG_FILE_AGE, 3 * Tools::DAY)
->logrotate(0, LoggerFileDriver::BZIP2);
// Ponechání jen posledních 7 souborů, zbytek bude smazán
$logger->addCondition(LoggerFileDriver::LOG_FILES_COUNT, '>7')
->addRule(LoggerFileDriver::PRUNE_OLD_LOG_FILES, 7);
Samozřejmě, že by na tyto podmínky šel navěsit vlastní callback.
S touto změnou by také souviselo rozdělení současné třídy
FileLogger
na dvě: Logger
a
LoggerFileDriver
.
- Honza Kuchař
- Člen | 1662
To nastavování pomocí pravidel je zajímavý nápad. Ale myslím, že je to zbytečeně složité. Spíš bych nachystal v Loggerovi nějaké události a potom udělal něco na styl pluginů. (pluginu by se předal objekt Loggeru a plugin by si zaregistroval svoje fce na ty události) Na implementaci je to jednoduché (tedy alespoň já myslím) a je tu obrovská flexibilita. Ale mě osobně stačí i ty 2 události.
Ale píšu sem, protože chci poděkovat za výborný doplněk. Takže děkuji. Usnadnil mi ladění MultipleFileUploaderu. (používám k zapisování konfliktů zámků při uploadech ve více vláknech – zapisuje dobu čekání na zámek)