2015-06-28 15 views
5

I registri del lume sono scritti su /storage/logs e per impostazione predefinita viene indicato il nome lumen.log. Come cambio il nome del file per dire xyz.log?Laravel Lumen cambia il nome del file di registro

+0

Il nome file [è hardcoded] (https://github.com/laravel/lumen-framework/blob/f018f423daba627d577e217100d9db82db9aeb10/src/Application.php#L604) nel core del framework. Non sono sicuro se può essere sostituito. –

risposta

10

Come menzionato nei commenti, la posizione e il nome del file di registro sono hardcoded.

Ora, se per qualche motivo valido si desidera modificarlo, è sempre possibile estendere la classe Laravel\Lumen\Application e sovrascrivere il metodo getMonologHandler().

Creare un nuovo file in Application.phpapp cartella che assomiglia

namespace App; 

use Laravel\Lumen\Application as LumenApplication; 
use Monolog\Formatter\LineFormatter; 
use Monolog\Handler\StreamHandler; 
use Monolog\Logger; 

class Application extends LumenApplication 
{ 
    protected function getMonologHandler() 
    { 
     return (new StreamHandler(storage_path(env('APP_LOG_PATH', 'logs/xyz.log')), Logger::DEBUG)) 
      ->setFormatter(new LineFormatter(null, null, true, true)); 
    } 
} 

Ora cambiare

$app = new Laravel\Lumen\Application(

a

$app = new App\Application(

in bootstrap\app.php file di

Voilà il tuo file di registro ora si chiama xyz.log. Più sopra si può cambiare a quello che vuoi definendo la variabile d'ambiente APP_LOG_PATH cioè tramite .env file di

APP_LOG_PATH=logs/abc.log 
+1

Grazie per questa risposta completa. Quanto sopra funziona esattamente come dichiarato. Registrando felicemente i log su richiesta. – HamptonNorth

5

C'è un metodo pubblico disponibile configureMonologUsing visto here e referenziata here che è possibile utilizzare per ignorare il comportamento predefinito senza estendere l'applicazione.

Ecco come si usa nel vostro bootstrap/app.php:

$app->configureMonologUsing(function(Monolog\Logger $monolog) { 

    $handler = (new \Monolog\Handler\StreamHandler(storage_path('/logs/xyz.log'))) 
     ->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, true, true)); 

    return $monolog->pushHandler($handler); 
}); 

Bonus: anche checkout monologo di RotatingFileHandler.

+1

Si noti che se si utilizza un percorso * absolute *, è necessario escludere la funzione 'storage_path'. Altrimenti, funziona come previsto. –

Problemi correlati