yii2 y laravel usan mongdb para imprimir el registro de sentencias ejecutadas

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. 

 

 

Supongo que te gusta

Origin blog.csdn.net/lchmyhua88/article/details/111642745
Recomendado
Clasificación