/**
  * Code inspired by https://github.com/etsy/statsd/blob/master/examples/php-example.php
  */
 public static function doLog($logMethod, array $data, &$output)
 {
     list($host, $port, $types) = eZPerfLoggerINI::variableMulti('StatsdSettings', array('Host', 'Port', 'VariableTypes'));
     // Failures in any of this should be silently ignored
     try {
         $strings = array();
         foreach ($data as $varName => $value) {
             $type = isset($types[$varName]) && $types[$varName] != '' ? $types[$varName] : 'ms';
             $strings[] = static::transformVarName($varName) . ":{$value}|{$type}";
         }
         $fp = fsockopen("udp://{$host}", (int) $port, $errNo, $errStr);
         if (!$fp) {
             eZPerfLoggerDebug::writeWarning("Could not open udp socket to {$host}:{$port} - {$errStr}", __METHOD__);
             return;
         }
         if (eZPerfLoggerINI::variable('StatsdSettings', 'SendMetricsInSinglePacket') == 'enabled') {
             fwrite($fp, implode("\n", $strings));
         } else {
             foreach ($strings as $string) {
                 fwrite($fp, $string);
             }
         }
         fclose($fp);
     } catch (Exception $e) {
     }
 }
Exemplo n.º 2
0
 /**
  * Stops XHProf profiling and saves profile data in var/log/xhprof
  *
  * @return mixed false|string (the run_id)|true (when nosave==true)
  */
 public static function stop($dosave = true)
 {
     if (!extension_loaded('xhprof')) {
         eZPerfLoggerDebug::writeWarning('Extension xhprof not loaded, can not stop profiling', __METHOD__);
         return false;
     }
     if (!self::$profilingRunning) {
         return false;
     }
     $xhprofData = xhprof_disable();
     self::$profilingRunning = false;
     if (!$dosave) {
         return true;
     }
     if (!is_dir(self::$logdir)) {
         mkdir(self::$logdir);
     }
     $logger = new XHProfRuns_Default(self::$logdir);
     $runId = $logger->save_run($xhprofData, "xhprof");
     if ($runId) {
         // beside profiling data, save extra info in another file to make it more useful later
         file_put_contents(self::$logdir . "/{$runId}.info", eZPerfLoggerApacheLogger::apacheLogLine('combined'));
         self::$runs[] = $runId;
     }
     return $runId;
 }
Exemplo n.º 3
0
 public static function getModuleParamsData($var, $default = null)
 {
     // q: is here any chance this is not set?
     if (isset($GLOBALS['eZRequestedModuleParams'])) {
         $data = $GLOBALS['eZRequestedModuleParams'];
         $parts = explode('/', $var, 3);
         $value = isset($data[$parts[1]]) ? $data[$parts[1]] : $default;
         if (is_array($value) && isset($parts[2])) {
             $value = $value[$parts[2]];
         }
         return $value;
     } else {
         eZPerfLoggerDebug::writeWarning('Can not trace module params data, global variable "eZRequestedModuleParams" not found. Are you on eZ 5.0 or later?', __METHOD__);
         return $default;
     }
 }
 /**
  * Rotates a log file, if it's bigger than  $maxSize bytes.
  * Rotated files get a .20120612_122359 stringa ppended to their name
  * If $maxFiles is > 0, only $maxFiles files are kept, other eliminated
  */
 public static function rotateLogs($dir, $filename, $maxSize = 0, $maxFiles = 0)
 {
     $filepath = "{$dir}/{$filename}";
     if (is_file($filepath) && filesize($filepath) > $maxSize) {
         if (!rename($filepath, $filepath . "." . strftime('%Y%m%d_%H%M%S'))) {
             eZPerfLoggerDebug::writeWarning("Could not rotate log file {$filepath}", __METHOD__);
         }
     }
     if ($maxFiles) {
         $files = array();
         foreach (scandir($dir) as $afile) {
             if (is_file("{$dir}/{$afile}") && strpos($afile, $filename) === 0) {
                 $ext = substr(strrchr($afile, "."), 1);
                 $files[$ext] = $afile;
             }
         }
         if (count($files) > $maxFiles) {
             ksort($files);
             $oldest = "{$dir}/" . reset($files);
             if (!unlink($oldest)) {
                 eZPerfLoggerDebug::writeWarning("Could not remove log file {$oldest}", __METHOD__);
             }
         }
     }
 }