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中了。

 

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker安装 搭建私库 删除私库镜像 打印私库镜像 的shell脚本[通俗易懂]

    docker安装 搭建私库 删除私库镜像 打印私库镜像 的shell脚本[通俗易懂]#!/bin/bash#本脚本可以打印私有镜像库中所有的镜像#私有镜像库地址HUB_URL=hub.dy.com:5000#取得所有私有镜像库的所有镜像IMAGESLIST=$(curl-shttp://${HUB_URL}/v2/_catalog)#echo${IMAGESLIST}#删除后2个字符IMAGESLIST=${IMAGESLIST::-2}#删除…

  • listView1_ItemSelectionChanged事件

    listView1_ItemSelectionChanged事件ItemSelectionChanged事件会触发2次,其中第1次触发,是listview控件先做取消所有选择,第2次才是选择用户选定的项。所以要加上if(e.IsSelected)来判断是否是用户选择改变时触发。…

  • python+opencv的图像学基础以及简单的人脸识别

    python+opencv的图像学基础以及简单的人脸识别

  • linux用通配符取数据文件,Linux 通配符「建议收藏」

    linux用通配符取数据文件,Linux 通配符「建议收藏」概述本章节主要介绍关于linux通配符的用法,熟练运用通配符可以提高工作效率并且可以简化一些繁琐的处理步骤。测试数据touchaa6.logabc.logac.txtbcc5.txtx.logA“*”代表任意多个字符例:查询以”.log”结尾的文件ll*.log“?”代表任意单个字符例:只查询a、b、cll?“[]”代表“[”和“]”之间的某一个字符,比如[0-9]可以代表0-9…

  • linux 文档编辑命令_vim编辑器常用命令

    linux 文档编辑命令_vim编辑器常用命令Linux文档编辑命令1.vi或vim命令1.基本操作1.vim文件名:进入一般模式(不能输入)2.按下i从一般模式,进入到插入模式3.按下esc从插入模式,退出到一般模式4.在一般模式下,输入:wq,退出编辑。2.vi基本概念3.常用命令2.管道linux提供管道符号“|”作用是“命令1”的输出内容,将作为“命令2”…

  • Mysql数据库备份(一)——数据库备份和表备份[通俗易懂]

    一、Mysql中的数据备份:Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。1、Mys

发表回复

您的电子邮箱地址不会被公开。

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