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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • XMind常用快捷键[通俗易懂]

    XMind常用快捷键[通俗易懂]XMind常用快捷键

    2022年5月4日
    63
  • Reactor模式详解

    Reactor模式详解在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。I/O的四种模型I/0

    2022年8月2日
    13
  • BN层论文总结[通俗易懂]

    BN层论文总结[通俗易懂]论文:BatchNormalization:AcceleratingDeepNetworkTrainingbyReducingInternalCovariateShiftMotivation题目中的InternalCovariateShift指的是在训练过程中各层输入数据的分布随前一层网络参数的变化而变化的现象,这种现象会使训练深度神经网络变得更加复杂,需要耗费更多的时…

    2022年10月14日
    4
  • 网站前端和后台性能优化21

    网站前端和后台性能优化21

    2022年3月13日
    41
  • LoadRunner教程03:界面分析[通俗易懂]

    LoadRunner教程03:界面分析[通俗易懂]一、virtualusergeneratorLoadRunner拥有各种Vuser类型,每一类型都适合于特定的负载测试环境。这样就能够使用Vuser精确模拟真实世界的情形。Vuser在方案中执行的操作是用Vuser脚本描述的。Vuser脚本的结构的内容因Vuser类型的不同而不同。注意:VuGen仅能录制Windows平台上的会话。但录制的Vuser脚本既可以在Window平台上运

    2022年5月23日
    34
  • Centos Go环境搭建「建议收藏」

    Centos Go环境搭建「建议收藏」标准官网:https://golang.org/需要墙镜像官网:https://golang.google.cn/dl/【国内推荐】1、下载文件wgethttps://golang.google.cn/dl/go1.14.7.linux-amd64.tar.gz2、解压文件到/usr/local如果之前已经安装过go的版本,先清空下go下面src,不然可能会报一些previousdeclarationat/usr/local/go/src/runtime/internal/atom

    2022年10月12日
    3

发表回复

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

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