2015-04-09 11 views
5

Forse esiste una soluzione per ignorare le eccezioni 404? I'mean non memorizza questi messaggi nel file di registro?Yii log skip 404 errori

2015/04/09 12:28:52 [error] [exception.CHttpException.404] exception 'CHttpException' with message 'Невозможно обработать запрос "offer/downloadOffer".' in /var/www/yii/framework/web/CWebApplication.php:286 
Stack trace: 
#0 /var/www/yii/framework/web/CWebApplication.php(141): CWebApplication->runController('offer/downloadO...') 
#1 /var/www/yii/framework/base/CApplication.php(184): CWebApplication->processRequest() 
#2 /var/www/LAP/www/index.php(16): CApplication->run() 
#3 {main} 
REQUEST_URI=/offer/downloadOffer 

risposta

8

La soluzione è esclusa categorie.

array(
'class' => 'CFileLogRoute', 
'categories' => '!exception.CHttpException.404' 
), 
array(
'class' => 'CEmailLogRoute', 
'categories' => '!exception.CHttpException.*' 
), 
+0

Vorrei poter votare questa risposta fino più di una volta! – tinybyte

+0

Voterò per te! Soluzione abbastanza elegante. – PeterM

+0

Sei sicuro che questa sia la soluzione corretta a questo problema? Vedi la mia [risposta] (https://stackoverflow.com/a/47287472/667544). Penso che scoprirai che esclude tutte le ** categorie ** in quanto nessuna corrisponde! –

2

Per Yii 2.0, è possibile rendere il vostro config/main.php come questo:

return [ 
    'components' => [ 
     'log' => [ 
      'traceLevel' => YII_DEBUG ? 3 : 0, 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
        'except' => ['yii\web\HttpException:404'], 
       ], 
      ], 
     ], 
    ], 
]; 
0

Per Yii 1.1, il modo corretto per escludere una categoria è quello di utilizzare la chiave except. La pre-registrazione di un ! nella chiave categories in base alla risposta accettata avrà come risultato solo le categorie corrispondenti che iniziano con !. Quindi, mentre potrebbe sembrare che funzioni, in realtà sopprimerai tutte le categorie. Vedi la funzione filterAllCategories() del codice sorgente - non c'è elaborazione del carattere !, solo per la wildcard *: GitHub Source.

ho provato l'approccio !exception.CHttpException.404 nella risposta accettata e ho pensato risolto il problema di nascondere gli errori 404, ma poi ho capito dopo tanto tirare i capelli che questo è stato portato a nessun log viene registrato!

La sintassi corretta per ignorare una categoria è:

array(
    'class' => 'CFileLogRoute', 
    'except' => 'exception.CHttpException.404' 
)