Update logger.php

This commit is contained in:
Namhyeon Go 2018-03-05 01:56:11 +09:00 committed by GitHub
parent ea9698bbbc
commit 28319050a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,16 +1,163 @@
<?php/** * @file logger.php * @date 2018-01-10 * @author Go Namhyeon <gnh1201@gmail.com> * @brief Logger for VSPF */class Logger { public function sendMessage($message, $component = "web", $program = "unknown", $method="syslog") {  switch($method) {   case "syslog":    $this->sendMessageBySyslog($message, $component, $program);    break;   case "http":    $this->sendMessageByHttp($message, $component, $program);    break;   default:    $this->sendMessageBySyslog($message, $component, $program);  } }
 // send to loggy via HTTP (loggy.com) protected function sendMessageByHttp($message, $component = "web", $program = "unknown") {  $data = $this->getEventData();
  foreach(explode("\n", $message) as $line) {   $dataByLine = $data;   $dataByLine["message"] = $line;   $dataMessage = "";   foreach($dataByLine as $k=>$v) {    $dataMessage .= "{$k}={$v};";   }   $syslog_message = "<22>" . date('M d H:i:s ') . $program . ' ' . $component . ': ' . $dataMessage;
   $ch = curl_init();   $logTicket = "aHR0cDovL2xvZ3MtMDEubG9nZ2x5LmNvbS9pbnB1dHMvMDE0YzVkZDYtNDI0YS00MzIzLWJlNjUtNDhiNDZmMTZkYjU1L3RhZy9odHRwLw==";   curl_setopt($ch, CURLOPT_URL, base64_decode($logTicket));   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(    "weblog" => $syslog_message,    "detail" => $dataByLine   )));   curl_setopt($ch, CURLOPT_POST, 1);
   $headers = array();   $headers[] = "Content-Type: application/x-www-form-urlencoded";   curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
   $result = curl_exec($ch);   if (curl_errno($ch)) {    echo 'Error:' . curl_error($ch);   }   curl_close($ch);  } }
 // send to papertail via Syslog (papertail.com) protected function sendMessageBySyslog($message, $component = "web", $program = "unknown") {  $logTicket = "bG9nczYucGFwZXJ0cmFpbGFwcC5jb206NDI5ODY=";  $logInfo = base64_decode($logTicket);  list($logHost, $logPort) = explode(':', $logInfo);
  $data = $this->getEventData();
  $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);  foreach(explode("\n", $message) as $line) {   $dataByLine = $data;   $dataByLine["message"] = $line;   $dataMessage = json_encode($dataByLine);
   $syslog_message = "<22>" . date('M d H:i:s ') . $program . ' ' . $component . ': ' . $dataMessage;   if(!@socket_sendto($sock, $syslog_message, strlen($syslog_message), 0, $logHost, $logPort)) {    $this->sendMessage($message, $component, $program, "http");   }  }  socket_close($sock); }
 protected function getEventData() {  $data = array(   "time"       => date("M j G:i:s Y"),   "server"     => $this->getServerAddr(),   "hostname"   => $this->getHostname(),   "client"     => $this->getClientAddr(),   "agent"      => getenv('HTTP_USER_AGENT'),   "referrer"   => getenv('HTTP_REFERER'),   "query"      => getenv('QUERY_STRING'),   "self"       => $_SERVER['PHP_SELF'],   "method"     => $_SERVER['REQUEST_METHOD']  );    return $data; }  protected function getClientAddr() {  $addr = '';  if (isset($_SERVER['HTTP_CLIENT_IP']))   $addr = $_SERVER['HTTP_CLIENT_IP'];  else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))   $addr = $_SERVER['HTTP_X_FORWARDED_FOR'];  else if(isset($_SERVER['HTTP_X_FORWARDED']))   $addr = $_SERVER['HTTP_X_FORWARDED'];  else if(isset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))   $addr = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];  else if(isset($_SERVER['HTTP_FORWARDED_FOR']))   $addr = $_SERVER['HTTP_FORWARDED_FOR'];  else if(isset($_SERVER['HTTP_FORWARDED']))   $addr = $_SERVER['HTTP_FORWARDED'];  else if(isset($_SERVER['REMOTE_ADDR']))   $addr = $_SERVER['REMOTE_ADDR'];  else   $addr = 'UNKNOWN';
  return $addr; }
 protected function getServerAddr() {  $addr = '';  if(isset($_SERVER['SERVER_ADDR']) && isset($_SERVER['SERVER_PORT'])) {   $addr = $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT'];  } else if(isset($_SERVER['SERVER_ADDR'])) {   $addr = $_SERVER['SERVER_ADDR'];  } else if(isset($_SERVER['LOCAL_ADDR'])) {   $addr = $_SERVER['LOCAL_ADDR'];  } else if(function_exists('gethostname') && function_exists('gethostbyname')) {   $host = gethostname();   $addr = gethostbyname($host);  } else {            $addr = 'UNKNOWN';        }
  return $addr; }
    protected function getHostname() {        $host = '';        if(isset($_SERVER['HTTP_HOST'])) {            $host = $_SERVER['HTTP_HOST'];        } else if(isset($_SERVER['SERVER_NAME'])) {            $host = $_SERVER['SERVER_NAME'];        } else if(function_exists('gethostname')) {            $host = gethostname();        } else {            $host = 'UNKNOWN';        }                return $host;    }        protected function isAvailable($func) {  if (ini_get('safe_mode')) return false;  $disabled = ini_get('disable_functions');  if ($disabled) {   $disabled = explode(',', $disabled);   $disabled = array_map('trim', $disabled);   return !in_array($func, $disabled);  }  return true; }}
// create logger instance$logger = new Logger();
<?php
/**
* @file logger.php
* @date 2018-01-10
* @author Go Namhyeon <gnh1201@gmail.com>
* @brief Logger for VSPF
*/
class Logger {
public function sendMessage($message, $component = "web", $program = "unknown", $method="syslog") {
switch($method) {
case "syslog":
$this->sendMessageBySyslog($message, $component, $program);
break;
case "http":
$this->sendMessageByHttp($message, $component, $program);
break;
default:
$this->sendMessageBySyslog($message, $component, $program);
}
}
// send to loggy via HTTP (loggy.com)
protected function sendMessageByHttp($message, $component = "web", $program = "unknown") {
$data = $this->getEventData();
foreach(explode("\n", $message) as $line) {
$dataByLine = $data;
$dataByLine["message"] = $line;
$dataMessage = "";
foreach($dataByLine as $k=>$v) {
$dataMessage .= "{$k}={$v};";
}
$syslog_message = "<22>" . date('M d H:i:s ') . $program . ' ' . $component . ': ' . $dataMessage;
$ch = curl_init();
$logTicket = "aHR0cDovL2xvZ3MtMDEubG9nZ2x5LmNvbS9pbnB1dHMvMDE0YzVkZDYtNDI0YS00MzIzLWJlNjUtNDhiNDZmMTZkYjU1L3RhZy9odHRwLw==";
curl_setopt($ch, CURLOPT_URL, base64_decode($logTicket));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(
"weblog" => $syslog_message,
"detail" => $dataByLine
)));
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
}
}
// send to papertail via Syslog (papertail.com)
protected function sendMessageBySyslog($message, $component = "web", $program = "unknown") {
$logTicket = "bG9nczYucGFwZXJ0cmFpbGFwcC5jb206NDI5ODY=";
$logInfo = base64_decode($logTicket);
list($logHost, $logPort) = explode(':', $logInfo);
$data = $this->getEventData();
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
foreach(explode("\n", $message) as $line) {
$dataByLine = $data;
$dataByLine["message"] = $line;
$dataMessage = json_encode($dataByLine);
$syslog_message = "<22>" . date('M d H:i:s ') . $program . ' ' . $component . ': ' . $dataMessage;
if(!@socket_sendto($sock, $syslog_message, strlen($syslog_message), 0, $logHost, $logPort)) {
$this->sendMessage($message, $component, $program, "http");
}
}
socket_close($sock);
}
protected function getEventData() {
$data = array(
"time" => date("M j G:i:s Y"),
"server" => $this->getServerAddr(),
"hostname" => $this->getHostname(),
"client" => $this->getClientAddr(),
"agent" => getenv('HTTP_USER_AGENT'),
"referrer" => getenv('HTTP_REFERER'),
"query" => getenv('QUERY_STRING'),
"self" => $_SERVER['PHP_SELF'],
"method" => $_SERVER['REQUEST_METHOD']
);
return $data;
}
protected function getClientAddr() {
$addr = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$addr = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$addr = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$addr = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))
$addr = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$addr = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$addr = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$addr = $_SERVER['REMOTE_ADDR'];
else
$addr = 'UNKNOWN';
return $addr;
}
protected function getServerAddr() {
$addr = '';
if(isset($_SERVER['SERVER_ADDR']) && isset($_SERVER['SERVER_PORT'])) {
$addr = $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT'];
} else if(isset($_SERVER['SERVER_ADDR'])) {
$addr = $_SERVER['SERVER_ADDR'];
} else if(isset($_SERVER['LOCAL_ADDR'])) {
$addr = $_SERVER['LOCAL_ADDR'];
} else if(function_exists('gethostname') && function_exists('gethostbyname')) {
$host = gethostname();
$addr = gethostbyname($host);
} else {
$addr = 'UNKNOWN';
}
return $addr;
}
protected function getHostname() {
$host = '';
if(isset($_SERVER['HTTP_HOST'])) {
$host = $_SERVER['HTTP_HOST'];
} else if(isset($_SERVER['SERVER_NAME'])) {
$host = $_SERVER['SERVER_NAME'];
} else if(function_exists('gethostname')) {
$host = gethostname();
} else {
$host = 'UNKNOWN';
}
return $host;
}
protected function isAvailable($func) {
if (ini_get('safe_mode')) return false;
$disabled = ini_get('disable_functions');
if ($disabled) {
$disabled = explode(',', $disabled);
$disabled = array_map('trim', $disabled);
return !in_array($func, $disabled);
}
return true;
}
}
// create logger instance
$logger = new Logger();