• 技术文章 >后端开发 >php教程

    Laravel 修改默认日志文件名称和位置

    不言不言2018-07-05 14:42:53原创1022
    这篇文章主要介绍了关于Laravel 修改默认日志文件名称和位置,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    修改默认日志位置

    我们平常的开发中可能一直把laravel的日志文件放在默认位置不会有什么影响,但如果我们的项目上线时是全量部署,每次部署都是git中最新的代码,那这个时候每次都会清空我们的日志,显示这不是我们所期望的,好在laravel有提供我们修改的方法。

    我们这里以放在/var/log/nginx/app/phphub/phphub.log为例

    增加日志处理类#

    首先我们新建文件,app/Foundation/Bootstrap/ConfigureLogging.php,代码如下:

    <?php
    namespace App\Foundation\Bootstrap;
    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', '/var/log/nginx/app/system') . '/' . $config->get('app.log_name', 'laravel') . '.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', '/var/log/nginx/app/system') . '/' . $config->get('app.log_name', 'laravel') . '.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', 'laravel'));
     }
     /**
     * 设置应用errorlog模式下的Monolog处理程序
     *
     * @param \Illuminate\Contracts\Foundation\Application $app
     * @param \Illuminate\Log\Writer $log
     * @return void
     */
     protected function configureErrorlogHandler(Application $app, Writer $log)
     {
     $log->useErrorLog();
     }
    }

    配置日志存放路径#

    在.env中增加

    APP_NAME=phphub

    在config/app.php中增加

    /**
     * 应用程序名称
     */
    'name' => env('APP_NAME', 'laravel'),
    /**
     * 日志位置
     */
    'log_path' => '/var/log/nginx/app/' . env('APP_NAME', 'laravel'),
    /**
     * 日志文件名称
     */
    'log_name' => env('APP_NAME', 'laravel'),
    /**
     * 日志文件最大数
     */
    'log_max_files' => '30',

    应用我们新的处理类#

    修改Bootstrap/app.php,在return $app前增加代码

    $app->configureMonologUsing(function($monolog) use ($app) {
     $configureLogging = new App\Foundation\Bootstrap\ConfigureLogging();
     $configureLogging->configureHandlers($app, $app->log);
    });

    这时候我们可以使用\Log::info('test log info');测试一下,应该就会将日志记录在/var/log/nginx/app/phphub/phphub.log中了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

    相关推荐:

    laravel在终端中查看日志的方法

    以上就是Laravel 修改默认日志文件名称和位置的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Laravel 修改
    上一篇:用laravel dingo api插件库创建api的方法 下一篇:yii2 模板twig中使用GridView::widget
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 整理总结nginx、php-fpm和mysql等的权限划分• 哪位高手有php手册 • 小弟我有关于Linux的有关问题 • 求PHP获取数据表字段值的完整代码解决方法 • 最近有点迷惘,还想请大家指导上学习的方法
    1/1

    PHP中文网