laravel的monolog使用

今天做项目,用到了 "日志系统",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'


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值