clean up query logging

- remove query_log table, keeping only new_query_log
- drop unused import_npi_log table
- disable DB logging per default
- use file logging structure from osm.org
This commit is contained in:
Sarah Hoffmann
2016-04-07 20:37:27 +02:00
parent 1da4fed9b5
commit 009882999f
3 changed files with 38 additions and 79 deletions

View File

@@ -2,68 +2,59 @@
function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array()) function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array())
{ {
$aStartTime = explode('.',microtime(true)); $fStartTime = microtime(true);
$aStartTime = explode('.', $fStartTime);
if (!isset($aStartTime[1])) $aStartTime[1] = '0'; if (!isset($aStartTime[1])) $aStartTime[1] = '0';
$sOutputFormat = ''; $sOutputFormat = '';
if (isset($_GET['format'])) $sOutputFormat = $_GET['format']; if (isset($_GET['format'])) $sOutputFormat = $_GET['format'];
if ($sType == 'reverse')
{
$sOutQuery = (isset($_GET['lat'])?$_GET['lat']:'').'/';
if (isset($_GET['lon'])) $sOutQuery .= $_GET['lon'];
if (isset($_GET['zoom'])) $sOutQuery .= '/'.$_GET['zoom'];
}
else
$sOutQuery = $sQuery;
$hLog = array( $hLog = array(
date('Y-m-d H:i:s',$aStartTime[0]).'.'.$aStartTime[1], date('Y-m-d H:i:s',$aStartTime[0]).'.'.$aStartTime[1],
$_SERVER["REMOTE_ADDR"], $_SERVER["REMOTE_ADDR"],
$_SERVER['QUERY_STRING'], $_SERVER['QUERY_STRING'],
$sQuery $sOutQuery,
$sType,
$fStartTime
); );
if (CONST_Log_DB) if (CONST_Log_DB)
{ {
// Log if (isset($_GET['email']))
if ($sType == 'search') $sUserAgent = $_GET['email'];
{ elseif (isset($_SERVER['HTTP_REFERER']))
$oDB->query('insert into query_log values ('.getDBQuoted($hLog[0]).','.getDBQuoted($hLog[3]).','.getDBQuoted($hLog[1]).')'); $sUserAgent = $_SERVER['HTTP_REFERER'];
} elseif (isset($_SERVER['HTTP_USER_AGENT']))
$sUserAgent = $_SERVER['HTTP_USER_AGENT'];
$sSQL = 'insert into new_query_log (type,starttime,query,ipaddress,useragent,language,format)'; else
$sUserAgent = '';
$sSQL = 'insert into new_query_log (type,starttime,query,ipaddress,useragent,language,format,searchterm)';
$sSQL .= ' values ('.getDBQuoted($sType).','.getDBQuoted($hLog[0]).','.getDBQuoted($hLog[2]); $sSQL .= ' values ('.getDBQuoted($sType).','.getDBQuoted($hLog[0]).','.getDBQuoted($hLog[2]);
$sSQL .= ','.getDBQuoted($hLog[1]).','.getDBQuoted($_SERVER['HTTP_USER_AGENT']).','.getDBQuoted(join(',',$aLanguageList)).','.getDBQuoted($sOutputFormat).')'; $sSQL .= ','.getDBQuoted($hLog[1]).','.getDBQuoted($sUserAgent).','.getDBQuoted(join(',',$aLanguageList)).','.getDBQuoted($sOutputFormat).','.getDBQuoted($hLog[3]).')';
$oDB->query($sSQL); $oDB->query($sSQL);
} }
if (CONST_Log_File && CONST_Log_File_ReverseLog != '')
{
if ($sType == 'reverse')
{
$aStartTime = explode('.',$hLog[0]);
file_put_contents(CONST_Log_File_ReverseLog,
$aStartTime[0].','.$aStartTime[1].','.
php_uname('n').','.
'"'.addslashes(isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'').'",'.
'"'.addslashes($hLog[1]).'",'.
$_GET['lat'].','.
$_GET['lon'].','.
$_GET['zoom'].','.
'"'.addslashes($_SERVER['HTTP_USER_AGENT']).'",'.
'"'.addslashes($sOutputFormat).'"'."\n",
FILE_APPEND);
}
}
return $hLog; return $hLog;
} }
function logEnd(&$oDB, $hLog, $iNumResults) function logEnd(&$oDB, $hLog, $iNumResults)
{ {
$aEndTime = explode('.',microtime(true)); $fEndTime = microtime(true);
if (!$aEndTime[1]) $aEndTime[1] = '0';
$sEndTime = date('Y-m-d H:i:s',$aEndTime[0]).'.'.$aEndTime[1];
if (CONST_Log_DB) if (CONST_Log_DB)
{ {
$sSQL = 'update query_log set endtime = '.getDBQuoted($sEndTime).', results = '.$iNumResults; $aEndTime = explode('.', $fEndTime);
$sSQL .= ' where starttime = '.getDBQuoted($hLog[0]); if (!$aEndTime[1]) $aEndTime[1] = '0';
$sSQL .= ' and ipaddress = '.getDBQuoted($hLog[1]); $sEndTime = date('Y-m-d H:i:s',$aEndTime[0]).'.'.$aEndTime[1];
$sSQL .= ' and query = '.getDBQuoted($hLog[3]);
$oDB->query($sSQL);
$sSQL = 'update new_query_log set endtime = '.getDBQuoted($sEndTime).', results = '.$iNumResults; $sSQL = 'update new_query_log set endtime = '.getDBQuoted($sEndTime).', results = '.$iNumResults;
$sSQL .= ' where starttime = '.getDBQuoted($hLog[0]); $sSQL .= ' where starttime = '.getDBQuoted($hLog[0]);
@@ -72,19 +63,12 @@
$oDB->query($sSQL); $oDB->query($sSQL);
} }
if (CONST_Log_File && CONST_Log_File_SearchLog != '') if (CONST_Log_File)
{ {
$aStartTime = explode('.',$hLog[0]); $aOutdata = sprintf("[%s] %.4f %d %s \"%s\"\n",
file_put_contents(CONST_Log_File_SearchLog, $hLog[0], $fEndTime-$hLog[5], $iNumResults,
$aStartTime[0].','.$aStartTime[1].','. $hLog[4], $hLog[2]);
php_uname('n').','. file_put_contents(CONST_Log_File, $aOutdata, FILE_APPEND | LOCK_EX);
'"'.addslashes(isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'').'",'.
'"'.addslashes($hLog[1]).'",'.
'"'.addslashes($hLog[3]).'",'.
'"'.addslashes($_SERVER['HTTP_USER_AGENT']).'",'.
'"'.addslashes((isset($_GET['format']))?$_GET['format']:'').'",'.
$iNumResults."\n",
FILE_APPEND);
} }
} }

View File

@@ -112,10 +112,10 @@
@define('CONST_PolygonOutput_MaximumTypes', 1); @define('CONST_PolygonOutput_MaximumTypes', 1);
// Log settings // Log settings
@define('CONST_Log_DB', true); // Set to true to log into new_query_log table.
// You should set up a cron job that regularly clears out this table.
@define('CONST_Log_DB', false);
// Set to a file name to enable logging to a file.
@define('CONST_Log_File', false); @define('CONST_Log_File', false);
@define('CONST_Log_File_Format', 'TODO'); // Currently hard coded
@define('CONST_Log_File_SearchLog', '');
@define('CONST_Log_File_ReverseLog', '');

View File

@@ -13,29 +13,6 @@ CREATE TABLE import_osmosis_log (
event text event text
); );
drop table if exists import_npi_log;
CREATE TABLE import_npi_log (
npiid integer,
batchend timestamp,
batchsize integer,
starttime timestamp,
endtime timestamp,
event text
);
--drop table IF EXISTS query_log;
CREATE TABLE query_log (
starttime timestamp,
query text,
ipaddress text,
endtime timestamp,
results integer
);
CREATE INDEX idx_query_log ON query_log USING BTREE (starttime);
GRANT SELECT ON query_log TO "{www-user}" ;
GRANT INSERT ON query_log TO "{www-user}" ;
GRANT UPDATE ON query_log TO "{www-user}" ;
CREATE TABLE new_query_log ( CREATE TABLE new_query_log (
type text, type text,
starttime timestamp, starttime timestamp,
@@ -43,6 +20,7 @@ CREATE TABLE new_query_log (
useragent text, useragent text,
language text, language text,
query text, query text,
searchterm text,
endtime timestamp, endtime timestamp,
results integer, results integer,
format text, format text,
@@ -56,9 +34,6 @@ GRANT SELECT ON new_query_log TO "{www-user}" ;
GRANT SELECT ON TABLE country_name TO "{www-user}"; GRANT SELECT ON TABLE country_name TO "{www-user}";
GRANT SELECT ON TABLE gb_postcode TO "{www-user}"; GRANT SELECT ON TABLE gb_postcode TO "{www-user}";
create view vw_search_query_log as SELECT substr(query, 1, 50) AS query, starttime, endtime - starttime AS duration, substr(useragent, 1, 20) as
useragent, language, results, ipaddress FROM new_query_log WHERE type = 'search' ORDER BY starttime DESC;
drop table IF EXISTS word; drop table IF EXISTS word;
CREATE TABLE word ( CREATE TABLE word (
word_id INTEGER, word_id INTEGER,