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

来源:互联网 发布:新通教育 知乎 编辑:程序博客网 时间:2024/06/12 01:26

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

 分享 ⋅ maxincai ⋅ 于 1年前 ⋅ 最后回复由 maxincai 于 11个月前 ⋅ 3051 阅读

修改默认日志位置

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

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

增加日志处理类#

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

<?phpnamespace 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中了。

0 0