Why not setting up your own server log analysis?

I have been relying for 20 years on analog for reading my webserver logs. But maybe … this is a bit outdated, while some newer systems as awstats, google analytics or piwik are too overloaded for me. My more recent approach with plugins like statpress or slimstat considerably degraded my system performance. So why not setting up an own database as this can be done in 30 minutes?
First, get sqliteadmin.php as we need to build a small database “log.sqlite3”. Create a new table by pasting

CREATE TABLE 'visit' ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'page' TEXT, 'dt' DATETIME DEFAULT CURRENT_TIMESTAMP, 'ip' TEXT, 'name' TEXT);

in the SQL window of sqliteadmin.php and include the following code in the header of all your pages

class MyDB extends SQLite3 { function __construct() { $this->open("log.sqlite3"); } }
$db = new MyDB();
$logpage="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$logip = $_SERVER['REMOTE_ADDR'];
$logip = substr($logip, 0, strrpos($logip, ".")) . ".xxx";
isset($_SERVER['PHP_AUTH_USER'])? $logname = $_SERVER['PHP_AUTH_USER'] : $logname = $_SERVER['REMOTE_USER'];
$sql='INSERT INTO visit (page,ip,name) VALUES ("'.$logpage.'","'.$logip.'","'.$logname.'");';
$db->query($sql);
$db->close();

That’s all we need to record. Maybe you want also a statistics page? Here is it, showing all recorded traffic (and in brackets what is going on today).

<pre>Logfile Analysis
<?php
class MyDB extends SQLite3 { function __construct() { $this->open("log.sqlite3"); } }
$db = new MyDB();
$sql = "SELECT page, count(page) AS c FROM visit 
WHERE round(julianday('now') - julianday(dt)) >=0
GROUP BY page ORDER BY c DESC;";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  $pagearray[ $row["page"] ] =  $row["c"];
}
$sql = "SELECT page, count(page) AS c FROM visit 
WHERE round(julianday('now') - julianday(dt)) =0
GROUP BY page ORDER BY c DESC;";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  $pagetoday[ $row["page"] ] = $row["c"];
}
foreach ($pagearray as $key => $page) {
  echo  $page>5 ? "<div class=big>" . $page . "(". $pagetoday[$key] . ")" . "</div>" . $key . "<br>" : FALSE;
}
?>

Looks like we used only 32 lines of code, yea, yea.