Advertisement
annukaka

logClass

May 28th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.11 KB | None | 0 0
  1. <?php
  2.  
  3. namespace app\libs;
  4.  
  5. /*
  6.  
  7. log::start("testing");
  8. log::error("device:add:","wrong device ID");
  9. log::stop();
  10.  
  11. */
  12. class log
  13. {
  14.     static $dir = "/opt/pulsa/logs/";
  15.     static $suffix = ".log.json";
  16.     static $name = null;
  17.     static $info = [];
  18.     static $logs = null;
  19.     static $times =
  20.         [
  21.             "run_at" => null,
  22.             "benchmark_checkpoint" => [],
  23.             "benchmark_result" => null
  24.  
  25.         ];
  26.     static $last = null;
  27.     static $pipe = ["state"=>null,"message"=>null,"return"=>[],"debug_backtrace"=>null];
  28.  
  29.  
  30.     static function start($logname=null)
  31.     {
  32.         if (self::$times["run_at"]==null) {
  33.             define('FATAL', 'FATAL');
  34.             define('INFO', 'INFO');
  35.             define('ERROR', 'ERROR');
  36.             define('WARN', 'WARN');
  37.             define('TRACE', 'TRACE');
  38.             self::$name = $logname;
  39.             $time = time();
  40.             self::$times["run_at"] = date("Y-m-d H:i:s",$time);
  41.             self::$times["benchmark_checkpoint"]["START"] = self::microtime_float();
  42.             return true;
  43.         }
  44.         else return false;
  45.     }
  46.     static function stop()
  47.     {
  48.         if (self::$times["run_at"]!=null) {
  49.             self::$times["benchmark_checkpoint"]["STOP"] = self::microtime_float();
  50.             self::$times["benchmark_result"] =
  51.                 self::$times["benchmark_checkpoint"]["STOP"]-
  52.                 self::$times["benchmark_checkpoint"]["START"];
  53.             self::createfile();
  54.             return true;
  55.         }
  56.         else return false;
  57.     }
  58.     static function microtime_float($value='')
  59.     {
  60.         list($usec, $sec) = explode(" ", microtime());
  61.         return ((float)$usec + (float)$sec);
  62.     }
  63.     static function setinfo($info=[])
  64.     {
  65.         self::$info = $info;
  66.     }
  67.     static function set($logname=null,$state=null,$message=null,$return=null,$debug_backtrace=true)
  68.     {
  69.         if ($logname != null) {
  70.             $states = [
  71.                 FATAL,
  72.                 INFO,
  73.                 ERROR,
  74.                 WARN,
  75.                 TRACE,
  76.             ];
  77.             $ok = false;
  78.             foreach ($states as $value) {
  79.                 if ($state == $value) {
  80.                     $ok = true;
  81.                     break;
  82.                 }
  83.             }
  84.             if ($ok == false)
  85.                 $state = INFO;
  86.             $modal = self::$pipe;
  87.             $modal["state"] = $state;
  88.             $modal["message"] = $message;
  89.             $modal["return"] = $return;
  90.             $modal["debug_backtrace"] = $debug_backtrace==false?false:debug_backtrace();
  91.             self::$logs[$logname][]=$modal;
  92.             self::$times["benchmark_checkpoint"][$logname][]=self::microtime_float();
  93.             self::$last=$logname;
  94.             return true;
  95.         }
  96.         else return false;
  97.     }
  98.     static function getall($logname=null)
  99.     {
  100.         if (isset(self::$logs[$logname]))
  101.             $return = self::$logs[$logname];
  102.         else
  103.             $return[0] = self::$pipe;
  104.         return $return;
  105.     }
  106.     static function get($logname=null)
  107.     {
  108.         $return = self::$pipe;
  109.         if ($logname==null)
  110.             $logname = self::$last;
  111.  
  112.         if (isset(self::$logs[$logname])) {
  113.             end(self::$logs[$logname]);
  114.             $key = key(self::$logs[$logname]);
  115.             if (isset(self::$logs[$logname][$key]))
  116.                 $return = self::$logs[$logname][$key];
  117.         }
  118.         return $return;
  119.     }
  120.     static function createfile()
  121.     {
  122.         $value =
  123.             [
  124.                 "name" => self::$name,
  125.                 "info" => self::$info,
  126.                 "times" => self::$times,
  127.                 "logs" => self::$logs
  128.             ];
  129.         $value = json_encode($value,JSON_PRETTY_PRINT);
  130.         $return = false;
  131.         for ($i=0; $i < 100; $i++) {
  132.             $newfile = self::$dir . self::$times["run_at"] .".". $i.".".self::$name. self::$suffix;
  133.             if (!file_exists($newfile)) {
  134.                 touch($newfile);
  135.                 file_put_contents($newfile, $value);
  136.                 $return = true;
  137.                 break;
  138.             }
  139.         }
  140.         return $return;
  141.     }
  142.  
  143.     static function fatal($logname=null,$message=null,$return=null,$debug_backtrace=true)
  144.     {
  145.         return self::set($logname,FATAL,$message,$return,$debug_backtrace);
  146.     }
  147.     static function info($logname=null,$message=null,$return=null,$debug_backtrace=true)
  148.     {
  149.         return self::set($logname,INFO,$message,$return,$debug_backtrace);
  150.     }
  151.     static function error($logname=null,$message=null,$return=null,$debug_backtrace=true)
  152.     {
  153.         return self::set($logname,ERROR,$message,$return,$debug_backtrace);
  154.     }
  155.     static function warn($logname=null,$message=null,$return=null,$debug_backtrace=true)
  156.     {
  157.         return self::set($logname,WARN,$message,$return,$debug_backtrace);
  158.     }
  159.     static function trace($logname=null,$message=null,$return=null,$debug_backtrace=true)
  160.     {
  161.         return self::set($logname,TRACE,$message,$return,$debug_backtrace);
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement