class-wc-log-levels.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Standard log levels
  4. *
  5. * @version 3.2.0
  6. * @package WooCommerce/Classes
  7. */
  8. defined( 'ABSPATH' ) || exit;
  9. /**
  10. * Log levels class.
  11. */
  12. abstract class WC_Log_Levels {
  13. /**
  14. * Log Levels
  15. *
  16. * Description of levels:
  17. * 'emergency': System is unusable.
  18. * 'alert': Action must be taken immediately.
  19. * 'critical': Critical conditions.
  20. * 'error': Error conditions.
  21. * 'warning': Warning conditions.
  22. * 'notice': Normal but significant condition.
  23. * 'info': Informational messages.
  24. * 'debug': Debug-level messages.
  25. *
  26. * @see @link {https://tools.ietf.org/html/rfc5424}
  27. */
  28. const EMERGENCY = 'emergency';
  29. const ALERT = 'alert';
  30. const CRITICAL = 'critical';
  31. const ERROR = 'error';
  32. const WARNING = 'warning';
  33. const NOTICE = 'notice';
  34. const INFO = 'info';
  35. const DEBUG = 'debug';
  36. /**
  37. * Level strings mapped to integer severity.
  38. *
  39. * @var array
  40. */
  41. protected static $level_to_severity = array(
  42. self::EMERGENCY => 800,
  43. self::ALERT => 700,
  44. self::CRITICAL => 600,
  45. self::ERROR => 500,
  46. self::WARNING => 400,
  47. self::NOTICE => 300,
  48. self::INFO => 200,
  49. self::DEBUG => 100,
  50. );
  51. /**
  52. * Severity integers mapped to level strings.
  53. *
  54. * This is the inverse of $level_severity.
  55. *
  56. * @var array
  57. */
  58. protected static $severity_to_level = array(
  59. 800 => self::EMERGENCY,
  60. 700 => self::ALERT,
  61. 600 => self::CRITICAL,
  62. 500 => self::ERROR,
  63. 400 => self::WARNING,
  64. 300 => self::NOTICE,
  65. 200 => self::INFO,
  66. 100 => self::DEBUG,
  67. );
  68. /**
  69. * Validate a level string.
  70. *
  71. * @param string $level Log level.
  72. * @return bool True if $level is a valid level.
  73. */
  74. public static function is_valid_level( $level ) {
  75. return array_key_exists( strtolower( $level ), self::$level_to_severity );
  76. }
  77. /**
  78. * Translate level string to integer.
  79. *
  80. * @param string $level Log level, options: emergency|alert|critical|error|warning|notice|info|debug.
  81. * @return int 100 (debug) - 800 (emergency) or 0 if not recognized
  82. */
  83. public static function get_level_severity( $level ) {
  84. if ( self::is_valid_level( $level ) ) {
  85. $severity = self::$level_to_severity[ strtolower( $level ) ];
  86. } else {
  87. $severity = 0;
  88. }
  89. return $severity;
  90. }
  91. /**
  92. * Translate severity integer to level string.
  93. *
  94. * @param int $severity Serevity level.
  95. * @return bool|string False if not recognized. Otherwise string representation of level.
  96. */
  97. public static function get_severity_level( $severity ) {
  98. if ( array_key_exists( $severity, self::$severity_to_level ) ) {
  99. return self::$severity_to_level[ $severity ];
  100. } else {
  101. return false;
  102. }
  103. }
  104. }