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

吾爱主题 阅读:86 2021-09-07 16:02:00 评论:0

修改默认日志位置

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

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

增加日志处理类#

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 <?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中增加

?
1 APP_NAME=phphub

在config/app.php中增加

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /**   * 应用程序名称   */ '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前增加代码

?
1 2 3 4 $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中了。

以上这篇Laravel 修改默认日志文件名称和位置的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/abcde158308/article/details/62045351

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容