laravel的monolog使用

来源:互联网 发布:内蒙古广电网络宽带 编辑:程序博客网 时间:2024/06/05 19:00
今天做项目,用到了 "日志系统",laravel本身支持了 "monolog",就简单了解下。laravel对monolog的支持,比较简单,直接参照 "laravel学院" 的文章:http://laravelacademy.org/post/1878.htmlmonolog资料地址(现在想找什么原始资料,直接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'

0 0