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

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

修改默认日志位置

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

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

增加日志处理类#

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

  1. <?php

  2.  
  3. namespace App\Foundation\Bootstrap;

  4.  
  5. use Illuminate\Log\Writer;

  6. use Illuminate\Contracts\Foundation\Application;

  7.  
  8. class ConfigureLogging

  9. {

  10.  
  11. /**

  12. * 设置应用的Monolog处理程序

  13. *

  14. * @param \Illuminate\Contracts\Foundation\Application $app

  15. * @param \Illuminate\Log\Writer $log

  16. * @return void

  17. */

  18. public function configureHandlers(Application $app, Writer $log)

  19. {

  20. $method = 'configure'.ucfirst($app['config']['app.log']).'Handler';

  21.  
  22. $this->{
    $method}($app, $log);

  23. }

  24.  
  25. /**

  26. * 设置应用single模式下的Monolog处理程序

  27. *

  28. * @param \Illuminate\Contracts\Foundation\Application $app

  29. * @param \Illuminate\Log\Writer $log

  30. * @return void

  31. */

  32. protected function configureSingleHandler(Application $app, Writer $log)

  33. {

  34. $config = $app->make('config');

  35. $filename = $config->get('app.log_path', '/var/log/nginx/app/system') . '/' . $config->get('app.log_name', 'laravel') . '.log';

  36. $log->useFiles($filename);

  37. }

  38.  
  39. /**

  40. * 设置应用daily模式下的Monolog处理程序

  41. *

  42. * @param \Illuminate\Contracts\Foundation\Application $app

  43. * @param \Illuminate\Log\Writer $log

  44. * @return void

  45. */

  46. protected function configureDailyHandler(Application $app, Writer $log)

  47. {

  48. $config = $app->make('config');

  49. $filename = $config->get('app.log_path', '/var/log/nginx/app/system') . '/' . $config->get('app.log_name', 'laravel') . '.log';

  50. $log->useDailyFiles(

  51. $filename,

  52. $app->make('config')->get('app.log_max_files', 5)

  53. );

  54. }

  55.  
  56. /**

  57. * 设置应用syslog模式下的Monolog处理程序

  58. *

  59. * @param \Illuminate\Contracts\Foundation\Application $app

  60. * @param \Illuminate\Log\Writer $log

  61. * @return void

  62. */

  63. protected function configureSyslogHandler(Application $app, Writer $log)

  64. {

  65. $log->useSyslog($app->make('config')->get('app.log_name', 'laravel'));

  66. }

  67.  
  68. /**

  69. * 设置应用errorlog模式下的Monolog处理程序

  70. *

  71. * @param \Illuminate\Contracts\Foundation\Application $app

  72. * @param \Illuminate\Log\Writer $log

  73. * @return void

  74. */

  75. protected function configureErrorlogHandler(Application $app, Writer $log)

  76. {

  77. $log->useErrorLog();

  78. }

  79. }

配置日志存放路径#

在.env中增加

APP_NAME=phphub

在config/app.php中增加

  1. /**

  2. * 应用程序名称

  3. */

  4. 'name' => env('APP_NAME', 'laravel'),

  5.  
  6. /**

  7. * 日志位置

  8. */

  9. 'log_path' => '/var/log/nginx/app/' . env('APP_NAME', 'laravel'),

  10.  
  11. /**

  12. * 日志文件名称

  13. */

  14. 'log_name' => env('APP_NAME', 'laravel'),

  15.  
  16. /**

  17. * 日志文件最大数

  18. */

  19. 'log_max_files' => '30',

应用我们新的处理类#

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

  1. $app->configureMonologUsing(function($monolog) use ($app) {

  2. $configureLogging = new App\Foundation\Bootstrap\ConfigureLogging();

  3. $configureLogging->configureHandlers($app, $app->log);

  4. });

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

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113138.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • android之AudioManager详解_什么是AudioManager

    AudioManager类位于android.Media 包中,该类提供访问控制音量和钤声模式的操作。官方文档中注明了:Use Context.getSystemService(Context.AUDIO_SERVICE) to get an instance of this class.所以我们可以通过下面的语句获得: AudioManager audiomanage =

    2022年3月9日
  • 卷积核(kernels)与滤波器(filters)的关系「建议收藏」

    卷积核(kernels)与滤波器(filters)的关系「建议收藏」简单理解:卷积核:二维的矩阵滤波器:多个卷积核组成的三维矩阵,多出的一维是通道。先介绍一些术语:layers(层)、channels(通道)、featuremaps(特征图),filters(滤波器),kernels(卷积核)。从层次结构的角度来看,层和滤波器的概念处于同一水平,而通道和卷积核在下一级结构中。通道和特征图是同一个事情。一层可以有多个通道(或者说特征图)。如果输入的是一个R…

    2022年5月21日
  • 在 Php 中把 Allow_url_fopen 打開的風險[通俗易懂]

    在 Php 中把 Allow_url_fopen 打開的風險[通俗易懂]https://blog.teatime.com.tw最近老是在我的/tmp裡頭,發現有個多出來的/tmp/cmdtemp檔案.也在apache的error_log中發現一些訊息如下:sh:-c:line1:syntaxerrornearunexpectedtoken`;’sh:-c:line1:`;1&gt;/tmp/cmdtemp2&gt;…

    2022年7月16日
  • 黑苹果收集

    黑苹果收集

    2021年8月26日
  • oracle存储过程捕捉异常后回滚_Oracle存储过程异常

    oracle存储过程捕捉异常后回滚_Oracle存储过程异常由三种方式抛出异常1.通过PL/SQL运行时引擎2.使用RAISE语句3.调用RAISE_APPLICATION_ERROR存储过程当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。异常也可以通过RAISE语句抛出RAISEexception_name;显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例…

    2022年7月17日
  • C++学习——继承与派生「建议收藏」

    C++学习——继承与派生「建议收藏」普通继承例题:定义一个名为Phone的手机类,有如下私有成员变量:品牌、型号、CPU、电池容量,如下成员函数:构造函数初始化手机的信息。在此基础上派生出NewPhone类,派生类增加了两个新的私有数据成员,分别用于表示颜色和价格,增加了一个成员函数用来输出手机信息。代码如下:#include <iostream>#include<string>#include&l…

    2022年8月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号