laravel的日志使用说明

文章目录

      • 了解系统的默认支持
      • 多个通道时它们的关系
      • 如何使用
      • 驱动
      • 默认日志是同步的

了解系统的默认支持

Laravel 日志基于「 通道 」和 「 驱动 」的。那么这个通道是干嘛的?驱动又是干嘛的?

通道 :
1.它表示了某种日志格式化的方式(或可理解为某个模块的日志)。
2.它配置了日志的输出方式,例如单个文件、每日一个文件、发送请求到日志服务器等。
3.它的配置可能支持锁、文件权限等,这要看这个通道是否提供支持。

驱动 :
确定日志消息的实际记录方式和位置(或理解为输出或写入内容的工具类)。

日志输出过程的流程图

上面流程图很重要,注意通道可以配置一个,也可以配置多个,也就是说支持配置日志同时写入多个通道进行输出。下面是默认的logging.php配置内容的一些注释。

'default' => env('LOG_CHANNEL', 'stack'),	//这里表示Log门面默认使用stack通道作为日志驱动,这是一个可以创建『多通道』通道的包装器。
'channels' => [		//channels数组:是laravel系统所有支持的“通道”都配置在这里						/** 下面着重说明一下stack:stack下又有一个channels配置,这里就是为什么我上面的流程图中表示的“它可以实现将日志同时输出到多处”,如记录在本地laravel-[date].log中,并同时发送至日志服务器: 127.0.0.1:8080/xxx(下面“多个通道时它们的关系”会提到),下面显示系统默认的配置并解释:*/'stack' => ['driver' => 'stack',		// 使用“stack驱动”,这与父级的“stack通道”是不同的'channels' => ['single'],	// 默认的配置文件使用了单个文件输出'ignore_exceptions' => false,	//默认不忽略异常],...        
]# 官方解释 ignore_exceptions=>true 时忽略每个子处理程序引发的异常。例如这允许您忽略远程tcp连接可能已断开但不希望整个应用程序崩溃的问题,并且可能希望继续登录到其他处理程序。

多个通道时它们的关系

官方给了两个很重要也很典型的日志驱动方式singledaily。如果没有合理配置的话,可能不能达到你期望的效果;并且多个配置之间存在会相互影响,所以要小心配置。

多个通道一起使用时,要了解每个通道的每个配置项,尤其是能相互影响的配置项。

名称描述默认值
bubble【重要】表示是否在处理后将消息传递到其他频道true
locking在写入日志文件之前尝试锁定日志文件false
permission日志文件的权限0644

配置示例:

'default' => env('LOG_CHANNEL', 'stack'),
'channels' => ['stack' => ['driver' => 'stack','channels' => ['daily', 'slack'],		// 这里配置了2个通道,它们是顺序的'ignore_exceptions' => false,],'daily' => ['driver' => 'daily',        // 按天生成日志文件'bubble' => false,        // 默认为 false , 当设置为true时表示不在传递到其他通道'path' => storage_path('logs/laravel.log'),'level' => env('LOG_LEVEL', 'debug'),	// 什么级别的日志记录在文件中?'days' => 14,],'slack' => ['driver' => 'slack',		// 将日志发送到Slack服务'url' => env('LOG_SLACK_WEBHOOK_URL'),	// 某服务地址'username' => 'Laravel Log','emoji' => ':boom:','level' => env('LOG_LEVEL', 'debug'), 				//默认critical,注意自己允许的日志级别],
]

上面示例中,使用 stack 作为默认的通道(因为Log门面默认只能设置一种通道),而这里又给 stack 配置了2个通道,这样就实现了日志既能保存在本地文件laravel-[date].log中,又能将日志请求至URL(slack的配置);其中当设置bubble => true表示不再传递到其它通道,所以当为stack配置多个通道时要注意使用默认值或false。还有每个通道都应设置level允许的日志级别,默认slack.level是允许critical级别,它不会发送debuginfo等日志到Slack服务

如何使用

Laravel框架提供了八个级别的日志方法和info()logger()两个辅助函数,使用时也可以指定单个或多个通道Log::channel("sms-log")->info($txt),这里不多说了,可以看官方文档。

# 这里还有2个.env的配置会影响日志,做个说明
APP_ENV=production			# 这里会显示在日志内容中
LOG_LEVEL=debug				# 这里在配置什么级别的日志写入某通道时很关键

自定义一个短信日志(通道)示例:

channels => [...'sms-xxx' => [			//定义xxx短信日志'driver' => 'daily',        			 // 采用按天生成日志文件的驱动'path' => storage_path('logs/sms-xxx.log'), 		// 这样会生产 sms-log-2024-01-01.log 文件名格式的日志'days' => 0,  		//注释掉,看源码未配置时默认是7天,想实现永久设置为0],...
]// 使用时调用写入指定sms-xxx通道:
Log::channel("sms-log")->info($txt); 	// 每个通道都可以使用这个8个级别的日志类型。这样指定的方式可以实现某个模块想单独记录一个日志文件的场景

驱动

上面‘如何使用’章节,定义的sms-xxx通道使用了每日一个日志文件的daily驱动。看到此配置更有利于理解通道与驱动的关系。

系统默认支持一些驱动,这个可以看官方文档。

使用monolog支持的保存日志至Elasticsearch

 'elasticsearch' => ['driver' => 'monolog','handler' => Monolog\Handler\ElasticsearchHandler::class,'formatter' => Monolog\Formatter\ElasticsearchFormatter::class,'handler_with' => ['host' => env('ELASTICSEARCH_HOST', 'localhost:9200'), // Elasticsearch 服务器地址'index' => 'laravel_logs', // Elasticsearch 索引名],'formatter_with' => ['application_name' => env('APP_NAME', 'Laravel'),'environment' => env('APP_ENV', 'production'),'server' => gethostname(),],],#【重要】关于上面ES的配置,并不一定和我上面的一致,因为ES版本不同要求的配置方式也不同,还需自己看当前版本的源码。 

默认日志是同步的

Laravel 支持的日志默认是同步执行的,如果想要实现异步可以利用 slack 或monolog 的其它支持、还可以基于它们自定义实现一下。

!完,你还想了解什么请留言讨论。

W+WPguiAgzFdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93ZWl4aW5fNDQwMjY5NjIvYXJ0aWNsZS9kZXRhaWxzLzEzNTM4MjQzMCkKW+WPguiAgzJdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC9zYW5iaW5neXV0dW9uaWFvMTIzL2FydGljbGUvZGV0YWlscy83MTEyNTMwNCkKW+a6kOeggeWIhuaekF0oaHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82NzYzMDA4MTEp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/363502.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云动态摘要 2024-06-28

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [新客专享]WeData 限时特惠 腾讯云 2024-06-21 数据分类分级管理,构建数据安全屏障 ,仅需9.9元! 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器…

游戏AI的创造思路-技术基础-深度学习(3)

继续填坑,本篇介绍深度学习中的长短期记忆网络~~~~ 目录 3.3. 长短期记忆网络(LSTM) 3.3.1. 什么是长短期记忆网络 3.3.2. 形成过程与运行原理 3.3.2.1. 细胞状态与门结构 3.3.2.2. 遗忘门 3.3.2.3. 输入门 3.3.2.4. 细胞状态更新 3.…

Younger 数据集:人工智能生成神经网络

设计和优化神经网络架构通常需要广泛的专业知识,从手工设计开始,然后进行手动或自动化的精细化改进。这种依赖性成为快速创新的重要障碍。认识到从头开始自动生成神经网络架构的复杂性,本文引入了Younger,这是一个开创性的数据集&…

机器学习python实践——关于管道模型Pipeline和网格搜索GridSearchCV的一些个人思考

最近在利用python跟着指导书进行机器学习的实践,在实践中使用到了Pipeline类方法和GridSearchCV类方法,并且使用过程中发现了一些问题,所以本文主要想记录并分享一下个人对于这两种类方法的思考,如果有误,请见谅&#…

Kubernetes 容器编排技术

Kubernetes 容器编排 前言 知识扩展 早在 2015 年 5 月,Kubernetes 在 Google 上的搜索热度就已经超过了 Mesos 和 Docker Swarm,从那儿之后更是一路飙升,将对手甩开了十几条街,容器编排引擎领域的三足鼎立时代结束。 目前,AWS…

蚂蚁- 定存

一:收益变动&&收益重算 1.1: 场景组合 1: 澳门元个人活期,日终余额大于0,当日首次、本周本月非首次系统结息,结息后FCDEPCORE_ASYN_CMD_JOB捞起进行收益计算 【depc_account_revenue_detail】收益日 > 【depc_accoun…

Linux驱动开发笔记(十一)tty子系统及其驱动

文章目录 前言一、串口驱动框架1.1 核心数据结构1.2 数据处理流程 二、驱动编写1. 设备树的修改2. 相关API函数3. 驱动框架4. 具体功能的实现4.1 出入口函数的编写4.2 读写函数 前言 之前已经讲过应用层的应用,接下来我们继续进行驱动的学习。其实实际上我们很少主动…

【Redis四】主从复制、哨兵以及Cluster集群

目录 一.主从复制、哨兵、集群的区别 二.Redis主从复制 1.作用 2.原理 3.流程 三.搭建Redis 主从复制 1.源码编译安装以及配置文件修改 1.1.修改 Redis 配置文件(Slave节点操作) 2.验证主从复制 2.1.在Master节点上看日志 2.2.在Master节点上…

学习感悟丨在誉天学习数通HCIP怎么样

大家好,我是誉天学员的徐同学,学习的数通HCIP课程。 在学校的时候,听说下半年就要出去实习了,心中坎坷不安,现在我学到的知识远远不够的。然后就想着学点东西充实一下自己的知识面和专业能力,有一次和同学谈…

有没有能用蓝牙的游泳耳机,性能超凡的4大游泳耳机力荐

在现代科技的推动下,越来越多具备蓝牙功能的游泳耳机正在改变游泳爱好者的体验方式。这些创新产品不仅在防水性能上有了显著提升,还能让您在水中享受到高质量的音乐。然而,选择一款优秀的蓝牙游泳耳机并不简单,需要考虑到防水等级…

vite vue3使用axios解决跨域问题

引入依赖 npm install axios 在main.js中全局引入 import { createApp } from vue import App from ./App.vue import axios from axiosconst app createApp(App)// 全局引入axios app.config.globalProperties.$axios axiosapp.mount(#app) 修改vite.config.js的代理配置…

Java | Leetcode Java题解之第189题轮转数组

题目: 题解: class Solution {public void rotate(int[] nums, int k) {k % nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);}public void reverse(int[] nums, int start, int end) {whil…

搭建企业内网pypi镜像库,让python在内网也能像互联网一样安装pip库

目录 知识点实验1.服务器安装python2.新建一个目录/mirror/pip,用于存储pypi文件,作为仓库目录3.下载python中的所需包放至仓库文件夹/mirror/pip3.1. 新建requirement.py脚本(将清华pypi镜像库文件列表粘贴到requirement.txt文件中&#xff…

代码随想录算法训练营第三十七天|01背包问题、分割等和子集

01背包问题 题目链接:46. 携带研究材料 文档讲解:代码随想录 状态:忘了 二维dp 问题1:为啥会想到i代表第几个物品,j代表容量变化? 动态规划中,每次决策都依赖于前一个状态的结果,在…

Radxa 学习摘录

文章目录 1、参考资料2、硬件知识3、shell4、交叉编译工具链5、问题6、DTS 1、参考资料 技术论坛(推荐) 官方资料下载 wiki资料 u-boot 文档 u-boot 源码 内核文档 内核源码 原理图 radxa-repo radxa-build radxa-pkg radxa-docs 2、硬件知识 Rad…

RabbitMQ(七)Shovel插件对比Federation插件

文章目录 Shovel和Federation的主要区别(重点)一、启用Shovel插件二、配置Shovel三、测试1、测试计划2、测试效果发布消息源节点目标节点 Shovel和Federation的主要区别(重点) • Shovel更简洁一些 • Federation更倾向于跨集群使…

国外的Claude3.5 Sonnet Artifacts和国内的CodeFlying孰强孰弱?

在Claude 3.5 Sonnet发布后,最受大家关注的问题应该就是它在编写代码能力上的变化。 要知道在Claude3.0发布以来的这几个月就因为它的编写代码能力而一直受到人们的诟病。 那Anthropic这次终于是不负众望,在Claude 3.5 Sonnet中更新了一个叫做Artifact…

mysql是什么

mysql是什么 是DBMS软件系统,并不是一个数据库,管理数据库 DBMS相当于用户和数据库之间的桥梁,有超过300种不同的dbms系统 mysql是关系型数据库,关系型数据库存储模型很想excel,用行和列组织数据 sql是一门编程语言…

致敬经典:在国产开源操作系统 RT-Thread 重温 UNIX 彩色终端

引言 上篇文章里我们向大家介绍了 RT-Thread v5.1.0 的一些新特性。其中包括了终端环境的进一步完善。终端是人机交互的重要接口。实用的终端工具可以显著地提升系统使用者的幸福指数。举例来说,当我们想要修改一些系统配置,或是编写脚本时,一…

鸿蒙开发设备管理:【@ohos.distributedHardware.deviceManager (设备管理)】

设备管理 本模块提供分布式设备管理能力。 系统应用可调用接口实现如下功能: 注册和解除注册设备上下线变化监听发现周边不可信设备认证和取消认证设备查询可信设备列表查询本地设备信息,包括设备名称,设备类型和设备标识 说明&#xff1a…