美文网首页
Laravel5.5 自定义monolog配置修改默认日志文件名

Laravel5.5 自定义monolog配置修改默认日志文件名

作者: 小马在途_8bde | 来源:发表于2019-03-19 17:51 被阅读0次

    因为laravel5.5日志文件固定在storage/logs/中,不能自定义日志路径,想要实现路径可配置需要自定义配置

    增加日志处理类

    <?php
    /**
     * 自定义日志,用来方便配置日志文件
     *
     */
    
    namespace App\Extensions;
    
    use Illuminate\Log\Writer;
    use Illuminate\Contracts\Foundation\Application;
    
    class ConfigureLogging
    {
        /**
         * 设置应用的Monolog处理程序
         *
         * @param  \Illuminate\Contracts\Foundation\Application  $app
         * @param  \Illuminate\Log\Writer  $log
         * @return void
         */
        public function configureHandlers(Application $app, Writer $log)
        {
            $method = 'configure'.ucfirst($app['config']['app.log']).'Handler';
    
            $this->{$method}($app, $log);
        }
    
        /**
         * 设置应用single模式下的Monolog处理程序
         *
         * @param  \Illuminate\Contracts\Foundation\Application  $app
         * @param  \Illuminate\Log\Writer  $log
         * @return void
         */
        protected function configureSingleHandler(Application $app, Writer $log)
        {
            $config = $app->make('config');
            $filename = $config->get('app.log_path') . '/' . $config->get('app.log_name') . '.log';
            $log->useFiles($filename);
        }
    
        /**
         * 设置应用daily模式下的Monolog处理程序
         *
         * @param  \Illuminate\Contracts\Foundation\Application  $app
         * @param  \Illuminate\Log\Writer  $log
         * @return void
         */
        protected function configureDailyHandler(Application $app, Writer $log)
        {
            $config = $app->make('config');
            $filename = $config->get('app.log_path') . '/' . $config->get('app.log_name') . '.log';
            $log->useDailyFiles(
                $filename,
                $app->make('config')->get('app.log_max_files', 5)
            );
        }
    
        /**
         * 设置应用syslog模式下的Monolog处理程序
         *
         * @param  \Illuminate\Contracts\Foundation\Application  $app
         * @param  \Illuminate\Log\Writer  $log
         * @return void
         */
        protected function configureSyslogHandler(Application $app, Writer $log)
        {
            $log->useSyslog($app->make('config')->get('app.log_name'));
        }
    
        /**
         * 设置应用errorlog模式下的Monolog处理程序
         *
         * @param  \Illuminate\Contracts\Foundation\Application  $app
         * @param  \Illuminate\Log\Writer  $log
         * @return void
         */
        protected function configureErrorlogHandler(Application $app, Writer $log)
        {
            $log->useErrorLog();
        }
    }
    
    

    增加日志配置参数

    在 config/app.php 中增加配置

    # 日志路径
    'log_path' => env('APP_LOG_PATH', storage_path('logs')),
    # 日志文件名
    'log_name' => env('APP_LOG_NAME', 'labs'),
    
    

    增加环境变量

    APP_LOG_PATH = log_data
    APP_LOG_NAME = labs
    

    应用自定义日志处理类

    使用 configureMonologUsing 方法来配置应用程序对 Monolog 的完全控制。在 $app 变量返回之前,在 bootstrap/app.php 文件中调用此方法:

    
    // 自定义 Monolog 配置
    $app->configureMonologUsing(function($monolog) use ($app) {
        $log = new Illuminate\Log\Writer( $monolog );
        $configureLogging = new App\Extensions\ConfigureLogging();
        $configureLogging->configureHandlers($app, $log);
    });
    
    

    测试日志是否有效
    Log::info('log test');

    相关文章

      网友评论

          本文标题:Laravel5.5 自定义monolog配置修改默认日志文件名

          本文链接:https://www.haomeiwen.com/subject/gxpnmqtx.html