Vlastni logger, posilani chyb emailem s bluescreenem

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

Zdravim,

snazim se rozsirit \Tracy\Logger o posilani emailu i s prilozenym nagenerovanym html souborem s celym popisem chyby. Muj postup je nasledujici:

V config.neon

services:
	tracy.logger:
        autowired: no
    - App\Lib\CustomTracyLogger("%tempDir%", 'mail@mail.cloud')

konstruktor CustomTracyLogger

public function __construct($directory, $email, \Nette\Mail\IMailer $mailer, \Tracy\BlueScreen $blueScreen)
{
    $this->directory = $directory;
    $this->email = $email;
    $this->blueScreen = $blueScreen;
    $this->mailer = $mailer;
}

a pak mam pretizenou metodu log a sendEmail($message, $file = NULL), ktera posila email s prilohou $file.

Vse funguje spravne, email prijde i s prilohou, ale ten bluescreen je bez mych custom panelu, ktere pridavam v configu pres:

tracy:
    bar:
        - \App\Lib\ApiDebugBar

Pokud pouziji defaultni implemetaci \Tracy\Logger tak exportovana html chyba vlastni panely obsahuje.

Dekuji!

Martk
Člen | 634
+
0
-

Export html stránky neobsahuje bar. K posílání html v příloze nepotřebuješ přetěžovat metodu log.

Editoval Antik (11. 2. 2016 12:27)

Blujacker
Člen | 89
+
0
-

Antik napsal(a):

Export html stránky neobsahuje bar. K posílání html v příloze nepotřebuješ přetěžovat metodu log.

Pretezovat ji myslim musim, protoze defaultni implementace ma pouze metodu

protected function sendEmail($message)

Ja teto metode ale potrebuji take poslat jmeno souboru s chybou kterou chci prilozit, takze jsem pretizil metodu log a zmenil $this->sendEmail($message); na $this->sendEmail($message, $exceptionFile);. Pokud to jde nejak, budu rad za radu.

Spatne jsem se vyjadril, nemyslim bar ale panel (https://tracy.nette.org/en/extensions), ktery se mi v error html souboru s defaultnim loggerem vyskytuje (napr. http://oi66.tinypic.com/ndugde.jpg).

Dekuji!

Martk
Člen | 634
+
+1
-
protected function sendEmail($message) {
	$exceptionFile = $message instanceof \Exception || $message instanceof \Throwable ? $this->getExceptionFile($message): NULL;
}

V configu by měl být blueScreen místo bar.

Blujacker
Člen | 89
+
0
-

Dekuji, Funguje!

Ja
Člen | 260
+
0
-

@Blujacker zdravim, snazim se o neco podobneho, tzn. implementovat si vlastni logger a upravit si email, ktery z nette pri chybe chodi, akorat nemuzu zadnym zpusobem nette primet, aby se pouzila ta moje vlastni trida, nemohl bys prosim nasdilet sve reseni?

Nebo kde by tam mohlo byt nejake uskali? Udelal jsem to stejne jako ty, ale nejsem si jistej, zda ta moje trida ma implementovat ILogger rozhrani a extendovat puvodni logger?

Diky za pripadny postrceni
--------- edit -----------
jeste doplnim config.neon

<?php
tracy.logger:
	    autowired: no
	    class: App\Libs\MyLogger
	    arguments: [%appDir%/../log]
?>

Editoval Ja (28. 2. 2016 8:01)

Martk
Člen | 634
+
0
-
tracy.logger:
        class: Tracy\ILogger
		factory: App\Libs\MyLogger
        arguments: [%appDir%/../log]
Ja
Člen | 260
+
0
-

Uz vim cim to bylo, vyvolal jsem fatalni chybu (pridal jsem treba nejakou syntax krpu do metody), kdy se to vubec neprokousalo k ErrorPresenteru, takze nedoslo ke zpracovani mym loggerem. Tedy aspon tak jsem to chapal ja.

Ja
Člen | 260
+
0
-

@Blujacker prosim, jak ses popasoval s timto?

<?php
Strict standards
Declaration of Libs\IcLogger::sendEmail() should be compatible with Tracy\Logger::sendEmail($message)
?>
CZechBoY
Člen | 3608
+
0
-

@Ja: on použil asi stejnej předpis jako má interface, tzn přidal tam ještě $message oproti tvojí metodě.