Saltar al contenido

Registro diario de Laravel creado con permisos incorrectos

Comprende el código correctamente previamente a usarlo a tu trabajo y si ttienes algo que aportar puedes comentarlo.

Solución:

Laravel versión 5.6.10 y posteriores tienen soporte para un permission elemento en la configuración (config/logging.php) Para el single y el daily conductor:

    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 7,
        'permission' => 0664,
    ],

No es necesario hacer malabarismos con Monolog en el script de arranque.

Específicamente, se agregó soporte en https://github.com/laravel/framework/commit/4d31633dca9594c9121afbbaa0190210de28fed8.

Comencemos con lo que es constante.

Usted tiene un php artisan comando, dirigido por root.

Es seguro asumir que este comando se ejecuta diariamente.

Solución nº 1:

Dado que el usuario que crea los archivos es el que tiene permiso para escribir en ellos por defecto, podemos separar los registros por usuario así:

App/start/global.php

/*
|--------------------------------------------------------------------------
| Application Error Logger
|--------------------------------------------------------------------------
|
| Here we will configure the error logger setup for the application which
| is built on top of the wonderful Monolog library. By default we will
| build a basic log file setup which creates a single file for logs.
|
*/

Log::useDailyFiles(storage_path().'/logs/laravel-'.get_current_user().'.log');

Si tu www-datos el usuario creara un registro de errores, daría como resultado: storage/logs/laravel-www-data-2015-4-27.log.

Si tu raíz el usuario creara un registro de errores, daría como resultado: storage/logs/laravel-root-2015-4-27.log.

Solución nº 2:

Cambie el registro utilizado por su comando artesanal, en su script php.

En tus run() función, agregue esta línea al principio:

Log::useFiles(storage_path().'/logs/laravel-'.__CLASS__.'-'.Carbon::now()->format('Y-m-d').'.log');

Si el nombre de tu clase es ArtisanRunnerentonces su archivo de registro será:

storage/logs/laravel-ArtisanRunner-2015-4-27.log.

Conclusión: La solución número 1 es mejor, dado que delimita sus registros por usuario y, por lo tanto, no se producirán errores.

EDITAR: Como señaló Jason, get_current_user() devuelve el nombre del propietario del script. Por lo tanto, para que se aplique la solución n.° 1, chown sus archivos de clase artesanal al nombre de usuario requerido.

Para Laravel 5.1 utilizo lo siguiente hacia la parte inferior de bootstrap/app.php (como se menciona en los documentos):

/**
 * Configure Monolog.
 */
$app->configureMonologUsing(function(MonologLogger $monolog) 
    $filename = storage_path('logs/laravel-'.php_sapi_name().'.log');
    $handler = new MonologHandlerRotatingFileHandler($filename);
    $monolog->pushHandler($handler);
);

Por supuesto, hay muchos otros controladores que puede usar en su lugar.

Reseñas y calificaciones del tutorial

Si te mola el tema, eres capaz de dejar un escrito acerca de qué te ha impresionado de esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *