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


    修改默认日志位置

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

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

    增加日志处理类#

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

    1. <?php
    2.  
    3. namespace AppFoundationBootstrap;
    4.  
    5. use IlluminateLogWriter;
    6. use IlluminateContractsFoundationApplication;
    7.  
    8. class ConfigureLogging
    9. {
    10.  
    11. /**
    12. * 设置应用的Monolog处理程序
    13. *
    14. * @param IlluminateContractsFoundationApplication $app
    15. * @param IlluminateLogWriter $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 IlluminateContractsFoundationApplication $app
    29. * @param IlluminateLogWriter $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 IlluminateContractsFoundationApplication $app
    43. * @param IlluminateLogWriter $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 IlluminateContractsFoundationApplication $app
    60. * @param IlluminateLogWriter $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 IlluminateContractsFoundationApplication $app
    72. * @param IlluminateLogWriter $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 AppFoundationBootstrapConfigureLogging();
    3. $configureLogging->configureHandlers($app, $app->log);
    4. });

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

     

  • 相关阅读:
    中国跨境电商物流难题的三大解决方案
    美团外卖实时数仓建设实践
    美团商品知识图谱的构建及应用
    c++动态创建二维数组
    小鱼儿fish C#获取数组大小
    C#中定义数组--字符串及数组操作
    warning LNK4070的解决办法
    C++ 中 ZeroMemory、memset 危险需慎用
    C++中new和delete来创建和释放动态数组
    VS调试时查看动态数组的全部元素
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9263076.html
Copyright © 2020-2023  润新知