Implementation log:1.0
This commit is contained in:
parent
5676d618ae
commit
037cdd3948
|
@ -1,80 +1,85 @@
|
||||||
{
|
{
|
||||||
"available": {
|
"available": {
|
||||||
"session": {
|
"session": {
|
||||||
"1.0": []
|
"1.0": []
|
||||||
},
|
},
|
||||||
"filedriver": {
|
"filedriver": {
|
||||||
"1.0": []
|
"1.0": []
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"1.0": []
|
"1.0": {
|
||||||
},
|
"filedriver": [
|
||||||
"error": {
|
"1.0"
|
||||||
"1.0": [],
|
]
|
||||||
"2.0": []
|
}
|
||||||
},
|
},
|
||||||
"http": {
|
"error": {
|
||||||
"1.0": []
|
"1.0": [],
|
||||||
},
|
"2.0": []
|
||||||
"api": {
|
},
|
||||||
"1.0": {
|
"http": {
|
||||||
"error": [
|
"1.0": []
|
||||||
"1.0"
|
},
|
||||||
]
|
"api": {
|
||||||
},
|
"1.0": {
|
||||||
"2.0": {
|
"error": [
|
||||||
"error": [
|
"1.0"
|
||||||
"2.0"
|
]
|
||||||
]
|
},
|
||||||
},
|
"2.0": {
|
||||||
"2.2": {
|
"error": [
|
||||||
"error": [
|
"2.0"
|
||||||
"2.0"
|
]
|
||||||
],
|
},
|
||||||
"http": [
|
"2.2": {
|
||||||
"1.0"
|
"error": [
|
||||||
]
|
"2.0"
|
||||||
}
|
],
|
||||||
},
|
"http": [
|
||||||
"orm": {
|
"1.0"
|
||||||
"0.8.1": {
|
]
|
||||||
"database": [
|
}
|
||||||
"1.0"
|
},
|
||||||
]
|
"orm": {
|
||||||
},
|
"0.8.1": {
|
||||||
"0.8.2": {
|
"database": [
|
||||||
"database": [
|
"1.0"
|
||||||
"2.0"
|
]
|
||||||
]
|
},
|
||||||
}
|
"0.8.2": {
|
||||||
},
|
"database": [
|
||||||
"database": {
|
"2.0"
|
||||||
"1.0": {
|
]
|
||||||
"error": [
|
}
|
||||||
"1.0"
|
},
|
||||||
]
|
"database": {
|
||||||
},
|
"1.0": {
|
||||||
"2.0": {
|
"error": [
|
||||||
"error": [
|
"1.0"
|
||||||
"2.0"
|
]
|
||||||
]
|
},
|
||||||
}
|
"2.0": {
|
||||||
},
|
"error": [
|
||||||
"lightdb": {
|
"2.0"
|
||||||
"1.0": []
|
]
|
||||||
},
|
}
|
||||||
"router": {
|
},
|
||||||
"1.0": [],
|
"lightdb": {
|
||||||
"2.0": []
|
"1.0": []
|
||||||
}
|
},
|
||||||
},
|
"router": {
|
||||||
"installed": {
|
"1.0": [],
|
||||||
"api": "2.2",
|
"2.0": []
|
||||||
"error": "2.0",
|
}
|
||||||
"http": "1.0",
|
},
|
||||||
"orm": "0.8.2",
|
"installed": {
|
||||||
"database": "2.0",
|
"log": "1.0",
|
||||||
"router": "2.0",
|
"filedriver": "1.0",
|
||||||
"session": "1.0"
|
"router": "2.0",
|
||||||
}
|
"api": "2.2",
|
||||||
|
"error": "2.0",
|
||||||
|
"http": "1.0",
|
||||||
|
"orm": "0.8.2",
|
||||||
|
"database": "2.0"
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -21,8 +21,7 @@
|
||||||
|
|
||||||
/* (1) Creates file */
|
/* (1) Creates file */
|
||||||
try{
|
try{
|
||||||
fclose( fopen($file, 'w') );
|
return fclose( fopen($file, 'w') );
|
||||||
return true;
|
|
||||||
}catch(\Exception $e){ return false; }
|
}catch(\Exception $e){ return false; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,85 @@
|
||||||
|
|
||||||
namespace log\core;
|
namespace log\core;
|
||||||
|
|
||||||
|
use \filedriver\core\FileDriver;
|
||||||
|
|
||||||
|
|
||||||
class Log{
|
class Log{
|
||||||
|
|
||||||
|
private static $maxlen = 50;
|
||||||
|
|
||||||
|
/* [1] Attributes
|
||||||
|
=========================================================*/
|
||||||
|
private $label; // label of the log system
|
||||||
|
private $file; // absolute path to logfile
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Constructor
|
||||||
|
*
|
||||||
|
* @label<String> Label of the logger
|
||||||
|
*
|
||||||
|
=========================================================*/
|
||||||
|
private function __construct($label){
|
||||||
|
/* (1) Set logfile and label */
|
||||||
|
$this->label = $label;
|
||||||
|
$this->file = __BUILD__."/log/log/$label.log";
|
||||||
|
|
||||||
|
/* (2) Create file if doesn't exist already */
|
||||||
|
if( !is_file($this->file) )
|
||||||
|
FileDriver::create($this->file);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* [3] Writes a new log to the file
|
||||||
|
*
|
||||||
|
* @content<String> Content to log
|
||||||
|
* @tag<String> [OPT] Tag of the log (category)
|
||||||
|
*
|
||||||
|
* @return outputname<outputtype> outputdesc
|
||||||
|
*
|
||||||
|
=========================================================*/
|
||||||
|
public function log($content="...", $tag="default"){
|
||||||
|
/* (1) Get time data */
|
||||||
|
$timestamp = time();
|
||||||
|
$date = date('Y-m-s H:i:s', $timestamp);
|
||||||
|
|
||||||
|
/* (2) Create beginning string */
|
||||||
|
$body = "$timestamp | $date | [$tag] ";
|
||||||
|
$headerl = strlen($body);
|
||||||
|
|
||||||
|
/* (3) Split content by length */
|
||||||
|
$body .= substr($content, 0, self::$maxlen);
|
||||||
|
|
||||||
|
for( $i = self::$maxlen, $l = strlen($content) ; $i < $l ; $i += self::$maxlen )
|
||||||
|
$body .= "\n".str_repeat(" ", $headerl).substr($content, $i, self::$maxlen);
|
||||||
|
|
||||||
|
/* (4) Append to log file */
|
||||||
|
FileDriver::append($this->file, $body);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] Multiton attributes
|
||||||
|
=========================================================*/
|
||||||
|
private static $instance = []; // instances
|
||||||
|
|
||||||
|
/* [5] Multiton Manager
|
||||||
|
*
|
||||||
|
* @label<String> Label of the logger you want
|
||||||
|
*
|
||||||
|
* @return instance<Log> instance of the wanted logger
|
||||||
|
*
|
||||||
|
=========================================================*/
|
||||||
|
public static function get($label="default"){
|
||||||
|
/* (1) Create if doesn't exist */
|
||||||
|
if( !isset(self::$instance[$label]) )
|
||||||
|
self::$instance[$label] = new Log($label);
|
||||||
|
|
||||||
|
/* (2) Return instance for all cases */
|
||||||
|
return self::$instance[$label];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
1481495257 | 2016-12-37 23:27:37 | [default] sample log
|
Loading…
Reference in New Issue