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


相关推荐

  • 智能避障小车_基于单片机的智能玩具车系统设计

    智能避障小车_基于单片机的智能玩具车系统设计【1】背景意义近些年随着国民生活水平的提升,以小车为载体的轮式机器人进入了我们的生活,尤其是在一些布线复杂困难的安全生活区和需要监控的施工作业场合都必须依赖轮式机器人的视频监控技术。因此,基于嵌入式技术的无线通信视频监控轮式机器人应运而生。由于它们与人类工作相比具有成本低廉、安全稳定的优点,目前已经在许多危险作业以及工业场合得到了广泛应用而且轮式机器人不需要像人那样采取过多的保护措施,因此轮式机…

    2022年10月18日
    0
  • Layui弹出层取值

    Layui弹出层取值Layui弹出层取值1.首先在父页面定义要传过去的值table.on(‘tool(demo)’,function(obj){//obj为当前行对象vardata=obj.data;json=JSON.stringify(data);title=obj.event;//如果监听到父页面点击的是修改按钮if(obj.event===’edit’){

    2022年6月3日
    47
  • window批处理bat命令详解_cmd批处理命令

    window批处理bat命令详解_cmd批处理命令常见问题:1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat文件中输出中文乱码 解决方法在文章末尾!前言批处理文件(batchfile)包含一系列DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处理文件可以极大程度地节省时间,在应对重复性工…

    2022年8月22日
    7
  • export symbol 与 export symbol gpl

    export symbol 与 export symbol gpl1.EXPORT_SYMBOLEXPORT_SYMBOL(my_pub_func);在预编译阶段会解析为:externvoid*__crc_my_pub_func__attribute__((weak));staticconstunsignedlong__kcrctab_my_pub_func__attribute__((__used__))__attri

    2022年7月12日
    15
  • OleDbCommand类[通俗易懂]

    OleDbCommand类[通俗易懂]首先,建立一个OleDbCmdTest.aspx代码如下:&amp;lt;%@PageLanguage=&quot;C#&quot;AutoEventWireup=&quot;true&quot;CodeFile=&quot;OleDbCmdTest.aspx.cs&quot;Inherits=&quot;OleDbCmdTest&quot;%&amp;gt;&amp;lt;!DOCTYPE

    2022年5月20日
    40
  • Java之Java特点

    Java之Java特点

    2021年7月21日
    58

发表回复

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

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