120 lines
4.0 KiB
PHP
120 lines
4.0 KiB
PHP
<?php
|
|
/**
|
|
* logger.php
|
|
*
|
|
* @version 3.0
|
|
* @author Joey Kimsey <Joey@thetempusproject.com>
|
|
*/
|
|
namespace TheTempusProject\Canary\Classes;
|
|
|
|
class Logger {
|
|
public $file;
|
|
public $logDirectory;
|
|
public $logFilePath;
|
|
|
|
public function __construct() {
|
|
$this->setupLogFile();
|
|
$this->file = fopen( $this->logFilePath, 'a' );
|
|
fwrite( $this->file, '===================------++++++++++------===================' . PHP_EOL );
|
|
}
|
|
public function setupLogFile() {
|
|
$this->logDirectory = rtrim( CANARY_DEBUG_DIRECTORY, DIRECTORY_SEPARATOR );
|
|
if ( ! is_dir( $this->logDirectory ) ) {
|
|
mkdir( $this->logDirectory, 0777, true );
|
|
}
|
|
|
|
$currentFile = date('m-d-Y') . '.log';
|
|
$this->logFilePath = $this->logDirectory . DIRECTORY_SEPARATOR . $currentFile;
|
|
|
|
if ( ! file_exists( $this->logFilePath ) ) {
|
|
touch( $this->logFilePath );
|
|
chmod( $this->logFilePath, 0777 );
|
|
}
|
|
}
|
|
public function __destruct() {
|
|
fwrite( $this->file, '============================================================' . PHP_EOL );
|
|
fclose( $this->file );
|
|
}
|
|
|
|
public function addLog( $type = 'log', $log ) {
|
|
switch ( CANARY_DEBUG_TO_FILE_LEVEL ) {
|
|
case CANARY_DEBUG_LEVEL_ERROR:
|
|
$acceptableLoggingLevels = [
|
|
CANARY_DEBUG_LEVEL_ERROR,
|
|
];
|
|
if (! in_array( $type, $acceptableLoggingLevels )) {
|
|
return;
|
|
}
|
|
break;
|
|
case CANARY_DEBUG_LEVEL_WARN:
|
|
$acceptableLoggingLevels = [
|
|
CANARY_DEBUG_LEVEL_ERROR,
|
|
CANARY_DEBUG_LEVEL_WARN,
|
|
];
|
|
if (! in_array( $type, $acceptableLoggingLevels )) {
|
|
return;
|
|
}
|
|
break;
|
|
case CANARY_DEBUG_LEVEL_INFO:
|
|
$acceptableLoggingLevels = [
|
|
CANARY_DEBUG_LEVEL_ERROR,
|
|
CANARY_DEBUG_LEVEL_WARN,
|
|
CANARY_DEBUG_LEVEL_INFO,
|
|
];
|
|
if (! in_array( $type, $acceptableLoggingLevels )) {
|
|
return;
|
|
}
|
|
break;
|
|
case CANARY_DEBUG_LEVEL_LOG:
|
|
$acceptableLoggingLevels = [
|
|
CANARY_DEBUG_LEVEL_ERROR,
|
|
CANARY_DEBUG_LEVEL_WARN,
|
|
CANARY_DEBUG_LEVEL_INFO,
|
|
CANARY_DEBUG_LEVEL_LOG,
|
|
];
|
|
if (! in_array( $type, $acceptableLoggingLevels )) {
|
|
return;
|
|
}
|
|
break;
|
|
case CANARY_DEBUG_LEVEL_DEBUG:
|
|
$acceptableLoggingLevels = [
|
|
CANARY_DEBUG_LEVEL_ERROR,
|
|
CANARY_DEBUG_LEVEL_WARN,
|
|
CANARY_DEBUG_LEVEL_INFO,
|
|
CANARY_DEBUG_LEVEL_LOG,
|
|
CANARY_DEBUG_LEVEL_DEBUG,
|
|
];
|
|
if (! in_array( $type, $acceptableLoggingLevels )) {
|
|
return;
|
|
}
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
$formattedMessage = $this->timestamp() . $this->typestamp( $type ) . $log . PHP_EOL;
|
|
fwrite( $this->file, $formattedMessage );
|
|
}
|
|
|
|
private function timestamp() {
|
|
$dateString = self::getReadableDate( time() );
|
|
return '['.$dateString.'] - ';
|
|
}
|
|
|
|
private function typestamp( $type ) {
|
|
$dateString = self::getReadableDate( time() );
|
|
return '[' . strtoupper( $type ) . '] - ';
|
|
}
|
|
|
|
public static function getReadableDate( $timestamp, $with_timezone = false ) {
|
|
if ( $with_timezone ) {
|
|
$date = new \DateTime();
|
|
$date->setTimestamp( $timestamp );
|
|
$timezone = new \DateTimeZone( self::getTimezone() );
|
|
$date->setTimezone( $timezone );
|
|
$formattedDate = $date->format('Y-m-d H:i:s');
|
|
return $formattedDate;
|
|
}
|
|
return date( 'Y-m-d H:i:s', $timestamp );
|
|
}
|
|
}
|