Created
June 4, 2014 16:19
-
-
Save syossan27/e03650c60f57a9490dfc to your computer and use it in GitHub Desktop.
実行するSQLのクエリーをlaravel.log以外に吐いてみた ref: http://qiita.com/syo/items/215ca672ebc04970444e
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php namespace Illuminate\LogSql; | |
use Monolog\Logger; | |
use Illuminate\Support\ServiceProvider; | |
class LogSqlServiceProvider extends ServiceProvider { | |
/** | |
* Indicates if loading of the provider is deferred. | |
* | |
* @var bool | |
*/ | |
protected $defer = true; | |
/** | |
* Register the service provider. | |
* | |
* @return void | |
*/ | |
public function register() | |
{ | |
$logger = new Writer( | |
new Logger($this->app['env']), $this->app['events'] | |
); | |
$this->app->instance('logsql', $logger); | |
// If the setup Closure has been bound in the container, we will resolve it | |
// and pass in the logger instance. This allows this to defer all of the | |
// logger class setup until the last possible second, improving speed. | |
if (isset($this->app['logsql.setup'])) | |
{ | |
call_user_func($this->app['logsql.setup'], $logger); | |
} | |
} | |
/** | |
* Get the services provided by the provider. | |
* | |
* @return array | |
*/ | |
public function provides() | |
{ | |
return array('logsql'); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php namespace Illuminate\LogSql; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'providers' => array( | |
'Illuminate\LogSql\LogSqlServiceProvider', | |
// 省略 | |
'aliases' => array( | |
'LogSql' => 'Illuminate\Support\Facades\LogSql', | |
// 省略 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php namespace Illuminate\Support\Facades; | |
/** | |
* @see \Illuminate\LogSql\Writer | |
*/ | |
class LogSql extends Facade { | |
/** | |
* Get the registered name of the component. | |
* | |
* @return string | |
*/ | |
protected static function getFacadeAccessor() { return 'logsql'; } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
LogSql::useFiles(storage_path().'/logs/laravel_sql.log'); | |
Event::listen('illuminate.query', function($query, $bindings, $time, $name) | |
{ | |
$data = compact('bindings', 'time', 'name'); | |
foreach ($bindings as $i => $binding) | |
{ | |
if($binding instanceof \DateTime) | |
{ | |
$bindings[$i] = $binding->format('\'Y-m-d H:i:s\''); | |
}elseif(is_string($binding)){ | |
$bindings[$i] = "'$binding'"; | |
} | |
} | |
$query = str_replace(array('%', '?'), array('%%', '%s'), $query); | |
$query = vsprintf($query, $bindings); | |
LogSql::info($query, $data); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment