Logger and Configuration have test suites

This commit is contained in:
Guillermo Dev
2018-10-12 16:14:40 +02:00
parent eb4ba2935c
commit c59b044ba7
4 changed files with 189 additions and 34 deletions

View File

@@ -8,6 +8,8 @@ class Logger {
const QUIET = 0;
const NORMAL = 1;
const VERBOSE = 2;
const NO_FILE_LOGGED = '';
const NO_LOG_YET_MSG = 'No log yet !';
private static $start;
private static $data = array();
@@ -56,6 +58,25 @@ class Logger {
);
}
/**
* Clear the static properties, needed for testging
*/
public static function clear()
{
self::$start = null;
self::$data = array();
self::$log = '';
}
/**
* Flush previous static properties and start again
*/
public static function reset($data = array())
{
self::clear();
self::start($data);
}
/**
* If $key is passed, creates/overwrites existing self::$data[$key] with $info
* Otherwise, uses array_merge:
@@ -98,6 +119,7 @@ class Logger {
* - store the time lapse between start() and stop() calls in self::$data
*
* @param $data allow storing some info on stop
* @return string saved log message filepath
*/
public static function stop($data = null)
{
@@ -108,9 +130,11 @@ class Logger {
$time = (microtime(true) - self::$start) * 1000;
self::$data['time'] = round($time, 2).'ms';
$savedLogMessageFilePath = self::NO_FILE_LOGGED;
if (Configuration::get('log.verbosity') > Logger::QUIET) {
self::saveLogMessageToFile(self::generateLogMessage());
$savedLogMessageFilePath = self::saveLogMessageToFile(self::generateLogMessage());
}
return $savedLogMessageFilePath;
}
/**
@@ -122,25 +146,32 @@ class Logger {
$patterns = array_map(function($p) { return "%$p%"; }, array_keys(self::$data));
$msg = str_replace($patterns, array_values(self::$data), $format)."\n";
return $msg . (strlen(self::$log) > 0 ? self::$log : '');
return $msg . self::$log;
}
/**
*
* @param string $msg
* @return string saved log message file path
*/
private static function saveLogMessageToFile($msg)
{
$mostRecentLogFileName = Configuration::get('log.file');
if(self::isMostRecentLogFileFromYesterday()) {
self::makeRoomForNewLogFile($mostRecentLogFileName);
} else {
mkdir(dirname($mostRecentLogFileName), 0777, true);
if (!file_exists($mostRecentLogFileName)) {
if (!is_dir(dirname($mostRecentLogFileName))) {
mkdir(dirname($mostRecentLogFileName), 0777, true);
}
touch($mostRecentLogFileName);
}
if(self::isMostRecentLogFileFromYesterday()) {
self::makeRoomForNewLogFile($mostRecentLogFileName);
touch($mostRecentLogFileName);
}
touch($mostRecentLogFileName);
file_put_contents($mostRecentLogFileName, $msg, FILE_APPEND | LOCK_EX);
return $mostRecentLogFileName;
}
/**
@@ -149,9 +180,6 @@ class Logger {
private static function isMostRecentLogFileFromYesterday()
{
$mostRecentLogFileName = Configuration::get('log.file');
if (!file_exists($mostRecentLogFileName)) {
return false;
}
return filemtime($mostRecentLogFileName) < strtotime("midnight");
}
@@ -223,7 +251,7 @@ class Logger {
return "$logFileBaseName.$next";
}
public static function data()
public static function getData()
{
return self::$data;
}
@@ -232,7 +260,7 @@ class Logger {
{
$file = Configuration::get('log.file');
if(! file_exists($file)) {
return 'No log yet !';
return self::NO_LOG_YET_MSG;
}
$f = fopen($file, 'r');