Logger.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. /**
  3. * Yii日志代理,主要用于封装日志
  4. * @author zhaoqin
  5. */
  6. class Logger
  7. {
  8. /**
  9. * 路由信息
  10. * @var string
  11. */
  12. public static $route = '';
  13. /**
  14. * 用于致命错误信息
  15. * @param string $msg - 日志内容
  16. */
  17. public static function error($msg)
  18. {
  19. self::_log($msg, \CLogger::LEVEL_ERROR);
  20. }
  21. /**
  22. * 用于警告信息
  23. * @param string $msg - 日志内容
  24. */
  25. public static function warn($msg)
  26. {
  27. self::_log($msg, \CLogger::LEVEL_WARNING);
  28. }
  29. /**
  30. * 用于记录普通的信息
  31. * @param mixed $msg - 日志内容
  32. */
  33. public static function info($msg)
  34. {
  35. self::_log($msg, \CLogger::LEVEL_INFO);
  36. }
  37. /**
  38. * 用于记录普通的信息 (限制记录时间) 用于debug调试一段时间,后面又懒得删除的场景
  39. * @param mixed $msg - 日志内容
  40. * @param string $deadline - 记录截止时间
  41. */
  42. public static function infoUntil($msg, $deadline)
  43. {
  44. if ($deadline && strtotime($deadline) > time()) {
  45. self::_log($msg, \CLogger::LEVEL_INFO);
  46. }
  47. }
  48. /**
  49. * 打印多个参数的方法
  50. *
  51. * @param mixed ...$msgs
  52. * @return void
  53. */
  54. public static function infoMult(...$msgs)
  55. {
  56. // if (LWM_ENV != 'prod') {
  57. $all_msg = '';
  58. foreach ($msgs as $key => $msg) {
  59. $msg = var_export($msg, true);
  60. $all_msg .= $msg.'|';
  61. }
  62. $all_msg .= date('Y-m-d H:i:s');
  63. self::_log($all_msg, \CLogger::LEVEL_INFO);
  64. // }
  65. }
  66. /**
  67. * 打印多个参数的方法
  68. *
  69. * @param mixed ...$msgs
  70. * @return void
  71. */
  72. public static function gray(...$msgs)
  73. {
  74. // if (LWM_ENV != 'prod') {
  75. $all_msg = '';
  76. foreach ($msgs as $key => $msg) {
  77. $msg = var_export($msg, true);
  78. $all_msg .= $msg.'|';
  79. }
  80. $all_msg .= date('Y-m-d H:i:s');
  81. self::_log($all_msg, \CLogger::LEVEL_INFO);
  82. // }
  83. }
  84. public static function errorMult(...$msgs)
  85. {
  86. $all_msg = '';
  87. foreach ($msgs as $key => $msg) {
  88. $msg = var_export($msg, true);
  89. $all_msg .= $msg.'|';
  90. }
  91. $all_msg .= date('Y-m-d H:i:s');
  92. self::_log($all_msg, \CLogger::LEVEL_INFO);
  93. }
  94. /**
  95. * 用于记录debug的信息
  96. * @param string $msg - 日志内容
  97. */
  98. public static function debug($msg)
  99. {
  100. // if (in_array(LWM_ENV, ['dev', 'test'])) {
  101. self::_log($msg, \CLogger::LEVEL_INFO);
  102. // }
  103. }
  104. private static function _log($msg, $level)
  105. {
  106. if (is_object($msg) || is_array($msg)) {
  107. $msg = var_export($msg, true);
  108. }
  109. //获取输入日志的上下文环境
  110. $bt = debug_backtrace(0, 3);
  111. $category = 'application';
  112. if (defined('LWM_APP_ID')) {
  113. $category = LWM_APP_ID;
  114. }
  115. $msg .= " ["; //附加调试参数
  116. if (count($bt) == 3) {
  117. $callContext = $bt[2];
  118. //处理名字空间,兼容 yii日志分类格式
  119. // $newCategory = str_replace("\\", ".", $callContext['class']);
  120. $newCategory = isset($callContext['class']) ? $callContext['class'] : '';
  121. $newCategory .= '::' . $callContext['function'];
  122. // if (isset($callContext['line'])) {
  123. // $newCategory .= '-' . $callContext['line'];
  124. // }
  125. $msg .= "class={$newCategory}";
  126. // $category = $category . '.' . $newCategory;
  127. //附加函数参数
  128. $args = $callContext['args'];
  129. if (!empty($args)) {
  130. $args = json_encode($args);
  131. $msg .= " args={$args}";
  132. }
  133. }
  134. $msg .= ']';
  135. $msg .= ' request_id: '.LWM_REQUEST_ID;
  136. \Yii::log($msg, $level, $category);
  137. }
  138. }