return new CustomLogger(storage_path(‘logs/app.log‘));
·
// 这行代码的作用是创建一个"自定义日志本"
return new CustomLogger(storage_path('logs/app.log'));
我们拆成小部分,像拆积木一样一个个看~
第一部分:new CustomLogger(...) → 买一个“特别的日记本”
new CustomLogger(...) // "new"是买新东西的意思,CustomLogger是"特别的日志本"
- 想象
CustomLogger是一个带锁的日记本(比普通本子本特别) new就像你去商店买了一个新的带锁日记本- 括号里的内容是给这个日记本的“使用说明”
第二部分:storage_path('logs/app.log') → 日记本的“存放位置”
storage_path('logs/app.log') // 这是告诉日记本"要存在哪里"
我们拆得更细:
storage_path():Laravel里的“储物间”,专门放文件的地方'logs/app.log':储物间里的“日志文件夹”(logs)里的“app.log文件”- 合起来就是:“把日记本放在储物间的日志文件夹里,名字叫app.log”
就像你说“我的日记本要放在书桌的抽屉里,名字叫‘我的小秘密’”
第三部分:return → 把日记本“交给Laravel”
return // 意思是"把这个东西给需要的人"
- 就像你买了日记本后,告诉妈妈“这个日记本给家里用哦”
- 在这里是告诉Laravel:“以后系统要记日志,就用这个新的日记本吧”
完整例子:创建一个简单的自定义日志本
我们来做一个能写日志的“自定义日记本”:
<?php
// 文件:app/Loggers/CustomLogger.php
namespace App\Loggers;
// 自定义日志本类(就像带锁日记本的设计图)
class CustomLogger {
// 日记本的存放路径(比如"抽屉/我的小秘密.txt")
private $logFile;
// 造日记本时,告诉它要存在哪里(构造函数)
public function __construct($filePath) {
$this->logFile = $filePath; // 记住存放位置
}
// 写日志的方法(像在日记本上写东西)
public function log($message) {
// 要写的内容:时间 + 消息(比如"2024-08-16 10:00: 今天玩了积木")
$content = date('Y-m-d H:i:s') . ' - ' . $message . "\n";
// 把内容写到文件里(就像把字写到日记本上)
file_put_contents($this->logFile, $content, FILE_APPEND);
}
}
然后在Laravel的配置里使用它:
<?php
// 文件:config/logging.php(Laravel的日志配置文件)
// 引入我们的自定义日志本
use App\Loggers\CustomLogger;
// 在配置里告诉Laravel用我们的日志本
return [
'default' => 'custom',
'channels' => [
'custom' => [
'driver' => 'custom',
// 这里就是我们开头的代码啦
'via' => function () {
// 创建自定义日志本,存到storage/logs/app.log
return new CustomLogger(storage_path('logs/app.log'));
},
],
],
];
现在用这个日志本记东西:
<?php
// 在控制器里写日志
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Log;
class PlayController extends Controller {
public function playWithToys() {
// 用我们的自定义日志本记一条:"玩了积木"
Log::info('玩了积木');
return "玩得开心!";
}
}
执行后,storage/logs/app.log文件里会出现:
2024-08-16 10:00:00 - 玩了积木
知识体系小总结(像玩日记本的规则)
new CustomLogger():创建一个自定义的日志工具(特别的日记本)storage_path():Laravel里专门存文件的地方(储物间)'logs/app.log':日志文件的具体位置和名字(抽屉里的日记本)return:把创建好的日志工具交给系统使用(告诉大家用这个日记本)- 自定义日志的作用:可以自己控制日志怎么写、存在哪,比如加密码、加特殊格式
底层原理(简单说)
- 当Laravel需要写日志时,会找配置里的“日志通道”
- 看到
via选项,就会执行那个函数,得到我们创建的CustomLogger对象 CustomLogger知道日志要写到storage/logs/app.log文件- 当调用
Log::info()时,实际是调用CustomLogger的log()方法,把内容写到文件里
就像:
- 家里规定“记家庭日记要用客厅的蓝色本子”(配置)
- 你需要时就去拿那个蓝色本子(
new CustomLogger) - 本子知道自己要放在客厅抽屉(
storage_path) - 写完后就存在那里,大家都能看(日志文件)
现在你知道啦,这句话就是在给Laravel指定一个“特别的日记本”,让系统按我们的想法记录发生的事情,就像你用自己的日记本记录每天玩了什么玩具一样简单~
为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐



所有评论(0)