Este artículo comparte el método de registro para ver las declaraciones de mongodb ejecutadas en la página actual bajo el marco Yii y el marco laravel. El método principal es configurar los archivos relevantes para lograr el propósito de depurar SQL. Los métodos específicos son los siguientes:
En el marco yii, en el archivo config / public.php, introduzca mongo:
el código se muestra a continuación:
'mongodb' => array(
'class' => 'SammayeClient',
'uri' => 'mongodb://192.168.8.88:27017',
'options' => [],
'driverOptions' => [],
'enableProfiling' => true,
'db' => [
'huazai' => [
'writeConcern' => new \MongoDB\Driver\WriteConcern(1),
'readPreference' => new \MongoDB\Driver\ReadPreference(\MongoDB\Driver\ReadPreference::RP_PRIMARY),
'active' => true
]
],
),
Asegúrese de establecer enableProfiling en true.
Luego abra el registro de mongodb en el registro:
el código se muestra a continuación:
'log' => array(
'class' => 'CLogRouter',
'routes' => array(
array(
'class'=>'CFileLogRoute',//用于处理日志的类
'levels'=>'trace, info, profile, error, warning',//标识那些级别的日志可被记录
'filter'=>'CLogFilter', //日志过滤类
),
array(
'class' => 'CWebLogRoute',
'levels' => 'error, warning',
'categories' => 'system.db.*,yii\mongodb\*',
'filter' => 'CLogFilter',
'showInFireBug' => true, //将在firebug中显示日志
),
),
),
Luego ejecutamos la consulta mongodb:
Ejecute la consulta para ver qué conjunto de mongodb se utiliza y el valor vinculado a la condición de consulta, que es conveniente e intuitivo para encontrar el problema.
En este ejemplo, la colección OmsAttachMg se usa para realizar consultas y las condiciones se muestran en la figura:
Lo anterior es el registro de consultas de impresión de consultas mongodb en yii.
Vamos a presentar el registro de la consulta de mongodb y las condiciones de la consulta de impresión en laravel:
En el directorio App \ Providers, busque el archivo AppServiceProvider.php
Agregue el siguiente código en el método boot ():
ini_set('memory_limit', '512M');
$local = config('app.locale');
app('translator')->setLocale($local);
Carbon::setLocale($local);
Carbon::serializeUsing(function (Carbon $timestamp) {
return $timestamp->format('Y-m-d H:i:s');
});
DB::listen(function($query) {
foreach ($query->bindings as $i => $binding) {
if ($binding instanceof \DateTime) {
$query->bindings[$i] = $binding->format('Y-m-d H:i:s');
} else {
if (is_string($binding)) {
$query->bindings[$i] = "'$binding'";
}
}
}
$tmp = str_replace(array('%', '?'), array('%%', '%s'), $query->sql);
$tmp = vsprintf($tmp, $query->bindings);
$tmp = str_replace("\\","",$tmp);
Log::info($tmp."\n\n\t");
});
Luego miramos la consulta:
O imprimimos directamente:
el código se muestra a continuación:
DB::connection('mongodb')->enableQueryLog();
$file = DB::connection('mongodb')->collection('file')
->where(function($query) use ($data) {
if(!empty($data['filekey'])) {
$query->where('filekey', '=', trim($data['filekey']));
}
})
->first();
echo "<pre>";
print_r(DB::connection('mongodb')->getQueryLog());
De esta manera, puede ver el siguiente registro de ejecución de mongodb de la siguiente manera:
Esto nos dice qué conjunto, qué condición y valor límite usar mongo, lo cual es conveniente para la resolución de problemas.