From 8eee2c0c9257da86c65516b68c963d0491af8bd4 Mon Sep 17 00:00:00 2001 From: Shish Date: Sat, 24 Jan 2015 16:57:28 +0000 Subject: [PATCH] logstash logger --- ext/log_logstash/main.php | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 ext/log_logstash/main.php diff --git a/ext/log_logstash/main.php b/ext/log_logstash/main.php new file mode 100644 index 00000000..fbbff556 --- /dev/null +++ b/ext/log_logstash/main.php @@ -0,0 +1,56 @@ + + * Link: http://code.shishnet.org/shimmie2/ + * Description: Send log events to a network port. + * Visibility: admin + */ + +class LogLogstash extends Extension { + + public function onLog(LogEvent $event) { + global $user; + + try { + $data = array( + "@type" => "shimmie", + "@message" => $event->message, + "@fields" => array( + "username" => ($user && $user->name) ? $user->name : "Anonymous", + "section" => $event->section, + "priority" => $event->priority, + "time" => $event->time, + "args" => $event->args, + ), + #"@request" => $_SERVER, + "@request" => array( + "UID" => get_request_id(), + "REMOTE_ADDR" => $_SERVER['REMOTE_ADDR'], + ), + ); + + $this->send_data($data); + } catch (Exception $e) { + } + } + + private function send_data($data) { + global $config; + + $host = $config->get_string("log_logstash_host"); + if(!$host) { return; } + + try { + $parts = explode(":", $host); + $host = $parts[0]; + $port = $parts[1]; + $fp = fsockopen("udp://$host", $port, $errno, $errstr); + if (! $fp) { return; } + fwrite($fp, json_encode($data)); + fclose($fp); + } catch (Exception $e) { + } + } +} +?>