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


Posted in PHP onOctober 17, 2019

修改默认日志位置

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

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

增加日志处理类#

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

<?php
 
namespace App\Foundation\Bootstrap;
 
use Illuminate\Log\Writer;
use Illuminate\Contracts\Foundation\Application;
 
class ConfigureLogging
{
 
 /**
  * 设置应用的Monolog处理程序
  *
  * @param \Illuminate\Contracts\Foundation\Application $app
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 public function configureHandlers(Application $app, Writer $log)
 {
  $method = 'configure'.ucfirst($app['config']['app.log']).'Handler';
 
  $this->{$method}($app, $log);
 }
 
 /**
  * 设置应用single模式下的Monolog处理程序
  *
  * @param \Illuminate\Contracts\Foundation\Application $app
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 protected function configureSingleHandler(Application $app, Writer $log)
 {
  $config = $app->make('config');
  $filename = $config->get('app.log_path', '/var/log/nginx/app/system') . '/' . $config->get('app.log_name', 'laravel') . '.log';
  $log->useFiles($filename);
 }
 
 /**
  * 设置应用daily模式下的Monolog处理程序
  *
  * @param \Illuminate\Contracts\Foundation\Application $app
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 protected function configureDailyHandler(Application $app, Writer $log)
 {
  $config = $app->make('config');
  $filename = $config->get('app.log_path', '/var/log/nginx/app/system') . '/' . $config->get('app.log_name', 'laravel') . '.log';
  $log->useDailyFiles(
   $filename,
   $app->make('config')->get('app.log_max_files', 5)
  );
 }
 
 /**
  * 设置应用syslog模式下的Monolog处理程序
  *
  * @param \Illuminate\Contracts\Foundation\Application $app
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 protected function configureSyslogHandler(Application $app, Writer $log)
 {
  $log->useSyslog($app->make('config')->get('app.log_name', 'laravel'));
 }
 
 /**
  * 设置应用errorlog模式下的Monolog处理程序
  *
  * @param \Illuminate\Contracts\Foundation\Application $app
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 protected function configureErrorlogHandler(Application $app, Writer $log)
 {
  $log->useErrorLog();
 }
}

配置日志存放路径#

在.env中增加

APP_NAME=phphub

在config/app.php中增加

/**
 * 应用程序名称
 */
'name' => env('APP_NAME', 'laravel'),
 
/**
 * 日志位置
 */
'log_path' => '/var/log/nginx/app/' . env('APP_NAME', 'laravel'),
 
/**
 * 日志文件名称
 */
'log_name' => env('APP_NAME', 'laravel'),
 
/**
 * 日志文件最大数
 */
'log_max_files' => '30',

应用我们新的处理类#

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

$app->configureMonologUsing(function($monolog) use ($app) {
 $configureLogging = new App\Foundation\Bootstrap\ConfigureLogging();
 $configureLogging->configureHandlers($app, $app->log);
});

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

以上这篇Laravel 修改默认日志文件名称和位置的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
php遍历目录viewDir函数
Dec 15 PHP
PHP文件操作实现代码分享
Sep 01 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
eclipse php wamp配置教程
Jun 30 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
thinkPHP事务操作简单案例分析
Oct 17 #PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 #PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 #PHP
TP5框架请求响应参数实例分析
Oct 17 #PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 #PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 #PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 #PHP
You might like
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
pandas apply多线程实现代码
2020/08/17 Python
Python实现自动整理文件的脚本
2020/12/17 Python
检察官就职演讲稿
2014/01/13 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
珠宝店促销方案
2014/03/21 职场文书
婚前协议书范本
2014/04/15 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
演讲开场白和结束语
2015/05/29 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript