今天做项目,用到了 "日志系统",laravel本身支持了 "monolog",就简单了解下。
laravel对monolog的支持,比较简单,直接参照 "laravel学院" 的文章:
http://laravelacademy.org/post/1878.html
monolog资料地址(现在想找什么原始资料,直接github上搜索,或者google,基本都直接定位):
https://github.com/Seldaek/monolog
还有一篇文章,讲解的可能不错(还没看,只是看到:可以将不同的日志内容,记录到不同的文件中,例如:将订单记录专门记录到订单日志中,应该很好!):
http://www.cnblogs.com/yjf512/p/4173261.html
因时间有限,就不详细看文档了,只了解怎么使用就行(看学院的文章即可),我这里再总结下:
laravel对monolog的集成,有几个地方:
1.conifg/app.php 中的 "log" 配置项
'log' => env('APP_LOG', 'single'), // 可用配置有:"single", "daily", "syslog", "errorlog"
single —— 将日志记录到单个文件中。该日志处理器对应Monolog的StreamHandler。
daily —— 以日期为单位将日志进行归档,每天创建一个新的日志文件记录日志。该日志处理器 对应Monolog的RotatingFileHandler。
syslog —— 将日志记录到syslog中。该日志处理器 对应Monolog的SyslogHandler。
errorlog —— 将日志记录到PHP的error_log中。该日志处理器 对应Monolog的ErrorLogHandler。
上面4种方式不够,还可以使用configureMonologUsing方法完全控制Monolog的日志处理器:
$app->configureMonologUsing(function($monolog) {
$monolog->pushHandler(...);
});
这种方式需要注意的是:
必须将上述这段代码置于bootstrap/app.php文件返回$app之前处才能生效。
2.我们在项目中,使用 "log Facades" 来记录日志
use Log;
Log::debug(); // 记录日志
3.laravel内部的log集成 "monolog",是在 "Illuminate\Log\Writer",文件很简单,我们可以简单看下它的源码里的方法:
// 8种日志级别
emergency($message, $context = []) // 记录日志内容,以及具体的一个数据数组
alert()
critical()
error()
warning()
notice()
info()
debug()
// 与上面的8种方式一致,不过是第一个参数,传递 "具体日志级别",其他没区别。log() 和 write() 方法一致
log($level, $message, $context = []) // level可以是上面8种的任意一个:debug, info ...
write($level, $message, $context = [])
// 注册同 config/app.php 中的 log 配置项可用的4种配置相关的日志处理器
useFiles() // 可指定日志文件
useDailyFiles() // 可指定具体天的日志文件
useSyslog()
useErrorLog()
// 获取底层的 monolog 对象实例
getMonolog()
// 下面3个,和laravel的事件调度有关,没有研究过
listen()
setEventDispatcher()
getEventDispatcher()
4.以上几个文件查看过,并未发现,哪里设置了 "log" 日志的存储路径。通过全文搜索,筛选到:
Illuminate/Foundation/Bootstrap/ConfigureLogging.php 中,确实使用了:
$log->useFiles(
$app->storagePath().'/logs/laravel.log',
)
$log->useDailyFiles(
$app->storagePath().'/logs/laravel.log', is_null($maxFiles) ? 5 : $maxFiles,
)
/*
Illuminate/Foundation/Bootstrap/ConfigureLogging.php
该文件,可能是 laravel 启动相关的一些核心文件
*/
示例:
代码:
use Log;
Log::debug('dongxuemin', ['name'=>'dongxuemin', 'age'=>30]);
Log::info('dongxuemin', ['name'=>'dongxuemin', 'age'=>30]);
在 'storage/logs/laravel.log' 中记录:
[2017-04-10 16:54:28] local.DEBUG: dongxuemin {"name":"dongxuemin","age":30}
[2017-04-10 16:54:28] local.INFO: dongxuemin {"name":"dongxuemin","age":30}
修改 'config/app.php' 中的 "log" 配置为 'daily',会生成:
'storage/logs/laravel-2017-04-10.log'
laravel的monolog使用
最新推荐文章于 2024-01-04 11:26:04 发布