Laravel 8 自定义 log 日志
通过配置文件定义和记录 log
laravel 的框架的 log 功能的配置文件在 configlogging.php,可见 channel 里自带的一些 log 通道,记录 log 文件默认位于 storagelogs 文件夹下,如下图:
我们可以添加一个自定义的通道,如下:
testmylog => [
driver => single,
path => storage_path(mylogs/Mylog.log),
level => debug,
],
storage_path() 指定的是项目内的 storage 文件夹下,所以 path 为 storagemylogsMylog.log
定义好 log 通道后,我们可以指定这个通道来向 log 文件内写入内容,如下:
use IlluminateSupportFacadesLog; Log::channel(testmylog)->info(hello log testing, [apple => red, banana => yellow]);
通过代码来定义和使用 log
通过代码的形式来定义和记录 log 的方式有两种,分别是通过 IlluminateSupportFacadesLog 和 MonologLogger,下面我们分别举例
IlluminateSupportFacadesLog
use IlluminateSupportFacadesLog;
我们先创建一个名为 channel 的 log 通道, 并指定记录的 log 文件的路径
$channel1 = Log::build([
driver => single,
path => storage_path(mylogs/channel1.log),
]);
然后我们将需要记录的信息记录到 log 文件中
$channel1->info(Record in channel 1);
带参数数组记录 log
$channel1->info(Record in channel 1, [param1 => 1, param2 => 2]);
我们也可以将同一条内容同时记录到多个 log 通道指定的文件里
$channel2 = Log::build([
driver => single,
path => storage_path(mylogs/channel2.log),
]);
Log::stack([$channel1, $channel2])->info(Something happened on both channel1 and channel2);
MonologLogger
use MonologLogger; use MonologHandlerStreamHandler; 我们假定要创建一个名为 mypersionallog 的文件来记录 log, 这个文件位于 storagemylogs 的目录下 创建 logger 对象 $loggerObj = new Logger(mypersionallog); 指定路径 $loggerObj->pushHandler(new StreamHandler(storage_path(logs/mypersionallog.log), Logger::DEBUG)); 写入内容 $loggerObj->info(Say something, [aa => bb, cc => dd]);
下一篇:
vs code 代码格式化整理
