laravel的日志使用说明

news2025/1/11 11:34:28

文章目录

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

了解系统的默认支持

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-[date].log 文件名的日志
           	// 'days' => 14,  		//注释掉,可以实现永久保存
        ],
    ...
]

// 使用时调用写入指定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版本不同要求的配置方式也不同,还需自己看当前版本的源码。 

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

W+WPguiAgzFdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93ZWl4aW5fNDQwMjY5NjIvYXJ0aWNsZS9kZXRhaWxzLzEzNTM4MjQzMCkKW+WPguiAgzJdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC9zYW5iaW5neXV0dW9uaWFvMTIzL2FydGljbGUvZGV0YWlscy83MTEyNTMwNCkKW+a6kOeggeWIhuaekF0oaHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82NzYzMDA4MTEp

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正版软件 | 『闪点清单』— 您的智能悬浮任务管理专家

在繁忙的日常中,我们经常需要一个既能随时提醒,又不会打扰我们的待办事项管理工具。『闪点清单』,一款简约而不简单的悬浮清单软件,为您带来全新的任务管理体验。 设计简约,功能强大 『闪点清单』以其简约的设计和强大…

【2024最新版】Eclipse安装配置全攻略:图文详解

目录 1. Eclipse介绍1.1 背景1.2 主要特点和功能1.3 版本发布1.4 优势与劣势 2. 下载Eclipse3. 安装Eclipse4. 启动Eclipse 1. Eclipse介绍 Eclipse是一个开源的、基于Java的可扩展开发平台,主要用于Java开发者,但也支持其他语言如C/C、PHP、Python等。…

Webpack: 前端资深构建工具

概述 如果你是一名前端工程师,相信之前或多或少听过、用过 Webpack 这一构建工具,它能够融合多种工程化工具,将开发阶段的应用代码编译、打包成适合网络分发、客户端运行的应用产物如今,Webpack 已经深深渗入到前端工程的方方面面…

OCR训练和C#部署英文字符训练

PaddleOCR是一个基于飞桨开发的OCR(Optical Character Recognition,光学字符识别)系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。以下是其优点: 高精度:PaddleOCR采用深度学习算法进行训练…

基于Cisco的校园网络拓扑搭建

特此说明:请先看评论区留言哦~ 一、基础配置 1.新建拓扑图 2.服务器配置 3.PC端配置 4.核心交换机配置 a.CORE-S1 Switch>enable Switch#configure terminal Switch(config)#hostname CORE-S1 CORE-S1(config)#vlan 10 CORE-S1(config-vlan)#vlan 20 CO…

【低功耗设计】功耗模型和PTPX功耗分析流程

本文目录 功耗的构成1.静态功耗2.动态功耗1)内部功耗(internal power)2)翻转功耗(switch power) 功耗的分析功耗分析流程averaged power analysistime-based power analysis 从芯片设计到芯片量产的过程中功…

论文导读 | Manufacturing Service Operations Management近期文章精选

编者按 在本系列文章中,我们梳理了顶刊Manufacturing & Service Operations Management5月份发布有关OR/OM以及相关应用的文章之基本信息,旨在帮助读者快速洞察行业/学界最新动态。 推荐文章1 ● 题目:Robust Drone Delivery with Weath…

Web渗透:php反序列化漏洞

反序列化漏洞(Deserialization Vulnerability)是一种在应用程序处理数据的过程中,因不安全的反序列化操作引发的安全漏洞;反序列化是指将序列化的数据(通常是字节流或字符串)转换回对象的过程,如…

YOLOv10使用教程及导读

首先推荐一下我的YOLOv8/v10项目,仅需一个v8的钱(69.9),付费进群,即可获取v8/v10的全部改进,欢迎进群。 1 YOLOv10简介 论文链接:https://arxiv.org/pdf/2405.14458 官方代码链接:ht…

springboot集成达梦数据库,打包后,tomcat中启动报错

背景&#xff1a;springboot集成达梦数据库8&#xff0c;在工具idea中正常使用&#xff0c;但是打包后&#xff0c;无法启动&#xff0c;报错 pom引入的依赖 但是这种情况&#xff0c;只有在idea中启动没问题的解决方法 需要修改引入的依赖&#xff0c;再次打包就可以 <d…

数据库课程知识点总结

数据库概述 数据库基本特点&#xff1a;数据结构化&#xff0c;数据独立性&#xff0c;数据冗余小&#xff0c;易扩充&#xff0c;统一管理和控制&#xff0c;永久存储&#xff0c;有组织&#xff0c;可共享 三级模式 模式&#xff1a;一个数据库只有一个模式&#xff0c;是对…

【从0实现React18】 (六) 完成commit提交流程并初步实现react-dom包,完成首屏渲染测试

前面&#xff0c;我们提到 React 更新流程有四个阶段&#xff1a; 触发更新&#xff08;Update Trigger&#xff09;调度阶段&#xff08;Schedule Phase&#xff09;协调阶段&#xff08;Reconciliation Phase&#xff09;提交阶段&#xff08;Commit Phase&#xff09; 之前…

IEEE JSTSP综述:从信号处理领域分析视触觉传感器的研究

触觉传感器是机器人系统的重要组成部分&#xff0c;虽然与视觉相比触觉具有较小的感知面积&#xff0c;但却可以提供机器人与物体交互过程中更加真实的物理信息。 视觉触觉传感是一种分辨率高、成本低的触觉感知技术&#xff0c;被广泛应用于分类、抓取、操作等领域中。近期&a…

JavaWeb——MySQL:DDL

目录 3.DQL&#xff1a;查询 3.5 分页查询 ​编辑 总结&#xff1a; 3. DQL&#xff1a;查询 查询是使用最多、最频繁的操作&#xff0c;因为前面的修改以及删除&#xff0c;一般会交给数据库专业的人员&#xff0c;对于非数据库专业人员来说&#xff0c;老板一般会放心的…

vue3使用v-html实现文本关键词变色

首先看应用场景 这有一段文本内容&#xff0c;是项目的简介&#xff0c;想要实现将文本中的关键词进行变色处理 有如下关键词 实现思路 遍历文本内容&#xff0c;找到关键词&#xff0c;并使用某种方法更改其字体样式。经过搜寻资料决定采用v-html实现&#xff0c;但是v-h…

数据库管理-第210期 HaloDB-Oracle兼容性测试02(20240622)

数据库管理210期 2024-06-22 数据库管理-第210期 HaloDB-Oracle兼容性测试02&#xff08;20240622&#xff09;1 表增加列2 约束3 自增列4 虚拟列5 表注释6 truncat表总结 数据库管理-第210期 HaloDB-Oracle兼容性测试02&#xff08;20240622&#xff09; 作者&#xff1a;胖头…

一些css记录

background-blend-mode 定义了背景层的混合模式&#xff08;图片与颜色&#xff09;。菜鸟教程地址 例如&#xff1a; filter 滤镜 background-clip 背景颜色出现位置&#xff0c;是否包含边框 border-box | padding-box | content-box 有点像盒子模型 border-image-sou…

【Linux】使用ntp同步时间

ntp介绍 NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;是一种用于同步计算机时间的协议&#xff0c;工作在UDP的123端口上。它是一种客户端-服务器协议&#xff0c;用于同步计算机的时钟。通过连接到网络上的时间服务器&#xff0c;计算机可以获…

记因hive配置文件参数运用不当导致 sqoop MySQL导入数据到hive 失败的案例

sqoop MySQL导入数据到hive报错 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 64 报错解释&#xff1a; 这个错误表明Sqoop在尝试导入数据到Hive时遇到了问题&#xff0c;导致Hive进程异常退出。状态码…