Log.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. //以下为日志
  3. namespace common\library\Pay\lib;
  4. class Log
  5. {
  6. private $handler = null;
  7. private $level = 15;
  8. private static $instance = null;
  9. private function __construct(){}
  10. private function __clone(){}
  11. public static function Init($handler = null,$level = 15)
  12. {
  13. if(!self::$instance instanceof self)
  14. {
  15. self::$instance = new self();
  16. self::$instance->__setHandle($handler);
  17. self::$instance->__setLevel($level);
  18. }
  19. return self::$instance;
  20. }
  21. private function __setHandle($handler){
  22. $this->handler = $handler;
  23. }
  24. private function __setLevel($level)
  25. {
  26. $this->level = $level;
  27. }
  28. public static function DEBUG($msg)
  29. {
  30. self::$instance->write(1, $msg);
  31. }
  32. public static function WARN($msg)
  33. {
  34. self::$instance->write(4, $msg);
  35. }
  36. public static function ERROR($msg)
  37. {
  38. $debugInfo = debug_backtrace();
  39. $stack = "[";
  40. foreach($debugInfo as $key => $val){
  41. if(array_key_exists("file", $val)){
  42. $stack .= ",file:" . $val["file"];
  43. }
  44. if(array_key_exists("line", $val)){
  45. $stack .= ",line:" . $val["line"];
  46. }
  47. if(array_key_exists("function", $val)){
  48. $stack .= ",function:" . $val["function"];
  49. }
  50. }
  51. $stack .= "]";
  52. self::$instance->write(8, $stack . $msg);
  53. }
  54. public static function INFO($msg)
  55. {
  56. self::$instance->write(2, $msg);
  57. }
  58. private function getLevelStr($level)
  59. {
  60. switch ($level)
  61. {
  62. case 1:
  63. return 'debug';
  64. break;
  65. case 2:
  66. return 'info';
  67. break;
  68. case 4:
  69. return 'warn';
  70. break;
  71. case 8:
  72. return 'error';
  73. break;
  74. default:
  75. }
  76. }
  77. protected function write($level,$msg)
  78. {
  79. if(($level & $this->level) == $level )
  80. {
  81. $msg = '['.date('Y-m-d H:i:s').']['.$this->getLevelStr($level).'] '.$msg."\n";
  82. $this->handler->write($msg);
  83. }
  84. }
  85. }