function log() { try { $bt = debug_backtrace(); $fileAndLine = ""; for ($i = 0; $i < 10; $i++) { $row = $bt[$i]; if (isset($row["file"]) && isset($row["line"])) { $fileAndLine = $row["file"] . "::" . $row["line"]; $i = 50; } } return $fileAndLine; } catch (Exception $ex) { return ""; } }
Showing posts with label log. Show all posts
Showing posts with label log. Show all posts
Friday, December 22, 2017
Get code line and file name that's executing processing the current function in PHP
Thursday, July 6, 2017
Laravel 5: Logging All DB Query | Log Queries | Listen Query Events | Query Logging | Sql Logging | Log SQL | DB Connection Class | Laravel Database Connection | Laravel DB Connection Query Run Method
Laravel 5: Logging All DB Query | Log Queries | Listen Query Events | Query Logging | Sql Logging | Log SQL | DB Connection Class | Laravel Database Connection | Laravel DB Connection Query Run Method.
Logging query in Laravel is easy. You can then register event listener for DB. At first you need to create an service provider in directory ("project/app/Providers" ) named QueryLogProvider with following contents:
You are done with creating provider. Now you have to register in file "project/config/app.php" in section
All your queries will be stored on the location "project/storage/logs" with prefix file name "query-log".
But you can do some wired things, editing source code. To do so first need to open your connection class:
Illuminate\Database\Connection
and navigate to function:
protected function run($query, $bindings, Closure $callback)
actually all query in Laravel passed through this method.
So you can do whatever you wish to do here.
Logging query in Laravel is easy. You can then register event listener for DB. At first you need to create an service provider in directory ("project/app/Providers" ) named QueryLogProvider with following contents:
<?php
namespace App\Providers;
use Monolog\Logger;
use Illuminate\Support\Facades\DB;
use Monolog\Handler\StreamHandler;
use Illuminate\Support\ServiceProvider;
class QueryLogProvider extends ServiceProvider
{
public function register()
{
DB::listen(function ($query) {
$logFile = storage_path('logs/query-log-'.date("Y-m-d").'.log');
$stream = new Logger('log');
$stream->pushHandler(new StreamHandler($logFile));
$bindings = $query->bindings;
$time = $query->time;
$stream->info($query->sql, compact('bindings', 'time'));
});
}
}
You are done with creating provider. Now you have to register in file "project/config/app.php" in section
'providers' => [
.....,
App\Providers\QueryLogProvider::class
],
All your queries will be stored on the location "project/storage/logs" with prefix file name "query-log".
But you can do some wired things, editing source code. To do so first need to open your connection class:
Illuminate\Database\Connection
and navigate to function:
protected function run($query, $bindings, Closure $callback)
actually all query in Laravel passed through this method.
So you can do whatever you wish to do here.
Monday, May 5, 2014
Logging Hibernate SQL in Grails With Parameters
Add the following line to DataSource.groovy marked yellow
dataSource { pooled = true url = jdbc:mysql://localhost/database_name?useUnicode=yes&characterEncoding=UTF-8 driverClassName = com.mysql.jdbc.Driver username = database_user_name password = database_password dialect = org.hibernate.dialect.MySQL5InnoDBDialect dbCreate = "update" logSql = true properties { maxActive = 1000 maxIdle = 100 minIdle = 50 initialSize = 1 minEvictableIdleTimeMillis = 60000 timeBetweenEvictionRunsMillis = 60000 numTestsPerEvictionRun = 3 maxWait = 10000 testOnBorrow = true testWhileIdle = true testOnReturn = true validationQuery = "SELECT 1" } }
Add the following two code block to last of the file
log4j = { debug 'org.hibernate.SQL' trace 'org.hibernate.type.descriptor.sql.BasicBinder' }
hibernate { cache.use_second_level_cache = true cache.use_query_cache = true cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider' format_sql = false use_sql_comments = true }
Example output of trace/debug
Hibernate: /* insert com.pkm.LogTest */ insert into log_test (created, name, display_name, a_long_value) values (?, ?, ?, ?) 2014-05-05 09:42:44,803 [http-bio-8011-exec-10] TRACE sql.BasicBinder - binding parameter [1] as [TIMESTAMP] - Mon May 05 09:42:44 ALMT 2014 2014-05-05 09:42:44,803 [http-bio-8011-exec-10] TRACE sql.BasicBinder - binding parameter [2] as [VARCHAR] - Pritom Kumar Mondal 2014-05-05 09:42:44,803 [http-bio-8011-exec-10] TRACE sql.BasicBinder - binding parameter [3] as [VARCHAR] - pritom 2014-05-05 09:42:44,803 [http-bio-8011-exec-10] TRACE sql.BasicBinder - binding parameter [4] as [BIGINT] - 3
Thursday, May 23, 2013
Yii - How to print SQL used by the application
You can log the executed queries in the application log and review that. Something like this in the config file, and the file named "db.log" most probably created in "protected/runtime" folder.
Of course, once you're there nothing's stopping you from writing your own log route that does something different with the logged messages, but mind that the logs are processed at the end of the request (or when you call
By the way, the proper way to create dynamic query with parameters:
'components' => array(
'db'=>array(
'enableParamLogging' => true,
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'trace,log',
'categories' => 'system.db.CDbCommand',
'logFile' => 'db.log',
),
),
),
);
In some cases (e.g. when running tests), you will also need to call Yii::app()->log->processLogs(null);
at the end of the process for this to work.Of course, once you're there nothing's stopping you from writing your own log route that does something different with the logged messages, but mind that the logs are processed at the end of the request (or when you call
processLogs
), not every time you log something.By the way, the proper way to create dynamic query with parameters:
$criteria = new CDbCriteria();
$criteria->condition = 't.date BETWEEN :from_date AND :to_date';
$criteria->params = array(
':from_date' => $from_date,
':to_date' => $to_date,
);
$criteria->with = array('order');
$orders = ProductOrder::model()->findAll($criteria);
Subscribe to:
Posts (Atom)