SowerPHP

Framework PHP hecho en Chile

Herramientas de usuario

Herramientas del sitio


extensions:app:controller_component_log

Extensión app: Controller_Component_Log

Este componente permite llevar registros en la aplicación. El sistema está basado en Syslog y utiliza las mismas definiciones de códigos de recurso (facility) y gravedad (severity).

Para usar el componente se debe habilitar en el Controller_App del proyecto a través del atributo:

public $components = ['Log']; ///< Componentes usados por el controlador

Nota: la extensión app ya trae por defecto cargado el componente. Por lo cual si no se ha definido un atributo components en el proyecto no es necesario configurarlo.

Para registrar un evento en el log se debe utilizar en la acción de un controlador:

$this->Log->write('Mensaje a registrar');

Esto enviará el mensaje con gravedad LOG_INFO y como recurso se usará el atributo log_facility del controlador. Una buena idea es definir el log_facility en el Controller_App de esta forma todo controlador tendrá este atributo (luego en cada controlador se puede cambiar si es necesario):

public $log_facility = LOG_LOCAL0; ///< Ejemplo de LOG_FACILITY

En caso de querer cambiar en la misma llamada a la función la severidad o el recurso se deben pasan como segundo y tercer argumento respectivamente, ejemplo:

$this->Log->write('Mensaje a registrar', LOG_ERR, LOG_USER);

Métodos de reporte

El sistema utiliza diferentes métodos para realizar los reportes de Logs. Actualmente se encuentran definidos:

  • syslog: enviará el log a Syslog.
  • email: enviará el log por email a los usuarios de los grupos configurados como receptores de logs.
  • db: escribirá el log en la base de datos, se debe habilitar el módulo Module_Sistema.Logs.
  • file: escribirá el log en TMP/log_FACILITY_SEVERITY_Ymd.log.

La decisión de qué método se usará se realiza según la configuración de reportes del componente.

Configuración del componente

En la configuración del componente se puede definir que será reportado y donde, además se podrá definir a quién reportar por email y finalmente que recurso será el que se informará a Syslog en caso que se utilice este método.

Para cambiar la configuración del componente, se deberá hacer en el controlador Controller_App, en el atributo de los componentes, ejemplo:

public $components = [
    'Log' => [
        'report' => [
            LOG_LOCAL0 => [
                LOG_INFO => ['db'],
            ],
        ],
        'report_email' => [
            'attach' => true,
        ],
    ],
]; ///< Componentes usados por el controlador (pueden haber otros)

Con esta configuración un controlador que tenga definido:

public $log_facility = LOG_LOCAL0;

Podrá utilizar escribir un log en la base de datos escribiendo solamente:

$this->Log->write('Mensaje a registrar en la base de datos');

Lo anterior ya que en la configuración del componente se indicó que todos los logs provenientes del recurso LOG_LOCAL0 con severidad LOG_INFO (la por defecto al escribir un log) sean registrados a través del método db (base de datos).

extensions/app/controller_component_log.txt · Última modificación: 2016/04/14 16:53 por delaf