forked from ahuazhu/cat-php
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCat.php
92 lines (69 loc) · 2.14 KB
/
Cat.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
use Message\Impl\DefaultMessageProducer;
/**
* Class Cat
*/
class Cat
{
private static $messageProducer;
private static function init()
{
self::$messageProducer = new DefaultMessageProducer();
self::$messageProducer->init();
}
public static function newTransaction($type, $name)
{
if (self::$messageProducer == null) {
self::init();
}
return self::$messageProducer->newTransaction($type, $name);
}
public static function logEvent($type, $name, $key = null, $value = null, $status = \Message\Message::SUCCESS)
{
$event = self::newEvent($type, $name);
$event->setStatus($status);
$event->addData($key, $value);
$event->complete();
}
public static function logError($type, $name, Exception $error)
{
$event = self::newEvent($type, $name);
$event->setStatus($error->getMessage());
$trace = "\n" . $error->getMessage() . "\n";
$trace .= $error->getTraceAsString() . "\n";
$event->addData('Trace', $trace);
$event->complete();
}
public static function logMetricForCount($name, $quantity = 1)
{
self::logMetricInternal($name, 'C', sprintf("%d", $quantity));
}
public static function logMetricForDuration($name, $durationInMillis)
{
//TODO implement logMetricForDuration
}
public static function logMetricForSum($name, $value = 1.0)
{
self::logMetricInternal($name, 'S', sprintf("%.2f", $value));
}
private static function logMetricInternal($name, $status, $keyValuePairs)
{
if (self::$messageProducer == null) {
self::init();
}
$type = '';
$metric = self::$messageProducer->newMetric($type, $name);
if (isset($keyValuePairs)) {
$metric->addData($keyValuePairs);
}
$metric->setStatus($status);
$metric->complete();
}
public static function newEvent($type, $name)
{
if (self::$messageProducer == null) {
self::init();
}
return self::$messageProducer->newEvent($type, $name);
}
}