2016-12-16 3 views
1

Ich muss ein einfaches Protokollsystem für Benutzer implementieren. In den Bündelaktionen der Benutzer (zum Beispiel) möchte ich Monolog mit einigen Proben wie diesem verwenden.So erstellen Sie eine benutzerdefinierte Monolog-Datei nur für Benutzer, die sich in Symfony anmelden

public function indexAction(){ 
     $logger = $this->get('logger'); 
     $logger->users('User {X} is logout'); 
} 

Und es einzuloggen, speichert in bestimmten Datei dieses Protokoll (users.log) zum Beispiel

Antwort

3

Sie diese mit Kanälen erreichen können.

Der benutzerdefinierte Kanal konnte erstellt werden (in diesem Fall user_channel). Der Handler user_handler wird erstellt, der nur Datensätze für die user_channel protokolliert. Im Controller wird der spezifische Logger für einen Kanal angefordert. Alles, was mit diesem Logger protokolliert wird, wird unter user_channel angezeigt. user_handler werden nur diese Nachrichten in die Protokolldatei übertragen.

# app/config/config.yml 
monolog: 
    channels: ['user_channel'] 
    handlers: 
     user_handler: 
      level: debug 
      type:  stream 
      path:  '%kernel.logs_dir%/user.log' 
      channels: ['user_channel'] 
     main: 
      level: debug 
      type:  stream 
      path:  '%kernel.logs_dir%/log.log' 
      channels: ['!user_channel'] #In case you don't want other handler to receive user_channel messages 

Dann in der Steuerung können Sie direkt auf den Log-Handler zugreifen.

public function indexAction(){ 
     $logger = $this->get('monolog.logger.user_channel'); 
     $logger->debug('User {X} is logout'); 
} 

Die Protokolleinheit wird in '%kernel.logs_dir%/user.log' geschrieben.

Verwandte Themen