Compare commits

...

11 Commits

Author SHA1 Message Date
李思达
74b4bdaf99 Merge branch 'fix/sql_function' into 'master'
兼容sql function

See merge request composer/php-sql-logger!1
2019-03-25 10:58:30 +08:00
lisida
c743240d63 兼容sql function 2019-03-25 10:15:30 +08:00
dongwei
211ff1de4a change log to json 2019-03-15 16:57:43 +08:00
候学杰
47556ce2fe 已删除src/SqlEventServiceProvider.php 2019-03-01 15:23:48 +08:00
候学杰
964ad6c681 更新src/SqlEventServiceProvider.php
已删除src/EventServiceProvider.php
2019-03-01 15:22:39 +08:00
候学杰
171d0c953f Update README.md 2019-03-01 15:12:01 +08:00
候学杰
1958c1da6c Update README.md 2019-01-23 16:15:25 +08:00
候学杰
f285567df8 Update composer.json 2019-01-23 16:14:26 +08:00
候学杰
ac302f0b62 Update composer.json 2019-01-05 10:59:37 +08:00
候学杰
9a469ad2ea Merge branch 'master' of git.int.haowumc.com:arch/lumen-sql-logger 2018-05-17 21:12:07 +08:00
候学杰
2a0b956382 Update README.md 2018-05-17 21:01:34 +08:00
5 changed files with 58 additions and 33 deletions

View File

@ -4,14 +4,14 @@
### 引入
```bash
composer config repositories.lumen-sql-logger vcs git@git.int.haowumc.com:arch/lumen-sql-logger.git
composer require --dev arch/lumen-sql-logger
composer config repositories.php-sql-logger vcs git@git.int.haowumc.com:composer/php-sql-logger.git
composer require --dev paidian/php-sql-logger:dev-master
```
### 开启
```php
if (env('APP_ENV') == 'local') {
$app->register(Arch\EventServiceProvider::class);
$app->register(Arch\SQLEventServiceProvider::class);
}
```

View File

@ -1,5 +1,5 @@
{
"name": "arch/lumen-sql-logger",
"name": "paidian/php-sql-logger",
"authors": [
{
"name": "候学杰",

View File

@ -1,20 +0,0 @@
<?php
namespace Arch;
use Laravel\Lumen\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Illuminate\Database\Events\QueryExecuted' => [
'Arch\Listeners\QueryListener',
]
];
}

View File

@ -2,9 +2,9 @@
namespace Arch\Listeners;
use Arch\Logging\LogstashFormatter;
use Illuminate\Database\Events\QueryExecuted;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
class QueryListener
@ -20,9 +20,8 @@ class QueryListener
public function __construct()
{
$this->logger = new Logger(env('APP_NAME', 'APP_NAME'));
$handler = new RotatingFileHandler(storage_path('/logs/sql.log'), 15);
$formatter = new LineFormatter(null, null, false, true);
$handler->setFormatter($formatter);
$handler = new StreamHandler(storage_path('/logs/sql.log'));
$handler->setFormatter(new LogstashFormatter());
$this->logger->pushHandler($handler);
}
@ -36,10 +35,8 @@ class QueryListener
{
if (env('APP_DEBUG')) {
$sql = str_replace("?", "'%s'", $event->sql);
$log = vsprintf($sql, $event->bindings);
$requestId = app('request')->header('x-request-id','nginx_config_error');
$text = "$requestId\t$log\t";
$this->logger->debug($text, ['conn' => $event->connectionName, 'time' => $event->time.'ms']);
$log = $event->bindings ? vsprintf($sql, $event->bindings) : $sql;
$this->logger->debug($log, ['conn' => $event->connectionName, 'time' => $event->time.'ms']);
}
}

View File

@ -0,0 +1,48 @@
<?php
/**
* Created by PhpStorm.
* User: dongwei
* Date: 2019/1/10
* Time: 3:18 PM
*/
namespace Arch\Logging;
use Monolog\Formatter\NormalizerFormatter;
class LogstashFormatter extends NormalizerFormatter
{
protected $hostname;
public function __construct()
{
// logstash requires a ISO 8601 format date with optional millisecond precision.
parent::__construct('Y-m-d\TH:i:s.uP');
$this->hostname = gethostname();
}
public function format(array $record)
{
$record = parent::format($record);
$message = array(
'@timestamp' => $record['datetime'],
'host' => $this->hostname,
'app' => env('APP_NAME'),
);
$request_id = app('request')->header('X-Request-Id');
if ($request_id) {
$message['request_id'] = $request_id;
}
if (isset($record['message'])) {
$message['sql'] = $record['message'];
}
if (!empty($record['context'])) {
$message['conn'] =$record['context']['conn'];
$message['time'] =$record['context']['time'];
}
return $this->toJson($message) . "\n";
}
}