LoggerStringMatchFilter.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * log4php is a PHP port of the log4j java logging package.
  4. *
  5. * <p>This framework is based on log4j (see {@link http://jakarta.apache.org/log4j log4j} for details).</p>
  6. * <p>Design, strategies and part of the methods documentation are developed by log4j team
  7. * (Ceki Gülcü as log4j project founder and
  8. * {@link http://jakarta.apache.org/log4j/docs/contributors.html contributors}).</p>
  9. *
  10. * <p>PHP port, extensions and modifications by VxR. All rights reserved.<br>
  11. * For more information, please see {@link http://www.vxr.it/log4php/}.</p>
  12. *
  13. * <p>This software is published under the terms of the LGPL License
  14. * a copy of which has been included with this distribution in the LICENSE file.</p>
  15. *
  16. * @package log4php
  17. * @subpackage varia
  18. */
  19. /**
  20. * @ignore
  21. */
  22. if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
  23. /**
  24. */
  25. require_once(LOG4PHP_DIR . '/spi/LoggerFilter.php');
  26. /**
  27. * This is a very simple filter based on string matching.
  28. *
  29. * <p>The filter admits two options {@link $stringToMatch} and
  30. * {@link $acceptOnMatch}. If there is a match (using {@link PHP_MANUAL#strpos}
  31. * between the value of the {@link $stringToMatch} option and the message
  32. * of the {@link LoggerLoggingEvent},
  33. * then the {@link decide()} method returns {@link LOG4PHP_LOGGER_FILTER_ACCEPT} if
  34. * the <b>AcceptOnMatch</b> option value is true, if it is false then
  35. * {@link LOG4PHP_LOGGER_FILTER_DENY} is returned. If there is no match, {@link LOG4PHP_LOGGER_FILTER_NEUTRAL}
  36. * is returned.</p>
  37. *
  38. * @author VxR <vxr@vxr.it>
  39. * @version $Revision: 1.1 $
  40. * @package log4php
  41. * @subpackage varia
  42. * @since 0.3
  43. */
  44. class LoggerStringMatchFilter extends LoggerFilter {
  45. /**
  46. * @var boolean
  47. */
  48. var $acceptOnMatch = true;
  49. /**
  50. * @var string
  51. */
  52. var $stringToMatch = null;
  53. /**
  54. * @return boolean
  55. */
  56. function getAcceptOnMatch()
  57. {
  58. return $this->acceptOnMatch;
  59. }
  60. /**
  61. * @param mixed $acceptOnMatch a boolean or a string ('true' or 'false')
  62. */
  63. function setAcceptOnMatch($acceptOnMatch)
  64. {
  65. $this->acceptOnMatch = is_bool($acceptOnMatch) ?
  66. $acceptOnMatch :
  67. (bool)(strtolower($acceptOnMatch) == 'true');
  68. }
  69. /**
  70. * @return string
  71. */
  72. function getStringToMatch()
  73. {
  74. return $this->stringToMatch;
  75. }
  76. /**
  77. * @param string $s the string to match
  78. */
  79. function setStringToMatch($s)
  80. {
  81. $this->stringToMatch = $s;
  82. }
  83. /**
  84. * @return integer a {@link LOGGER_FILTER_NEUTRAL} is there is no string match.
  85. */
  86. function decide($event)
  87. {
  88. $msg = $event->getRenderedMessage();
  89. if($msg === null or $this->stringToMatch === null)
  90. return LOG4PHP_LOGGER_FILTER_NEUTRAL;
  91. if( strpos($msg, $this->stringToMatch) !== false ) {
  92. return ($this->acceptOnMatch) ? LOG4PHP_LOGGER_FILTER_ACCEPT : LOG4PHP_LOGGER_FILTER_DENY ;
  93. }
  94. return LOG4PHP_LOGGER_FILTER_NEUTRAL;
  95. }
  96. }
  97. ?>