[addon logger] Logger

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Honza Kuchař
Člen | 1662
+
0
-

Diskuse ke stránce Logger


Ahoj,
nápady co dál: :)

  1. Vytvářet nový soubor, pokud se přesáhne určitá velikost. (teď můžu udělat přes callback)
  2. Možnost posílat logy e-mailem? (teď můžu také udělat přes callback)
Panda
Člen | 569
+
0
-
  1. 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, …
  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)

o5
Člen | 416
+
0
-
Stránka neexistuje
Stránka nazvaná "Logger" na webu dosud neexistuje. Vytvořit stránku.
nAS
Člen | 277
+
0
-

Stránka se přesunula na subdoménu addons.

maarlin
Člen | 207
+
0
-

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
+
0
-

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
+
0
-

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)