DevLog
<?php
namespace App\Helper;
/**
* Class DevLog
* @package App\Helper
*
* Simple log class to log to a file
*
* Will try to determine type of message and
* present accordingly.
*
*/
class DevLog
{
/**
* @var array
* Add hostnames that should not be allowed for logging
*/
public static $disallowed_hosts = [
// add hosts
];
private static function canLog($log_location, $safe_mode){
if (!file_exists($log_location)) {
touch($log_location);
}
return (
in_array(gethostname(), self::$disallowed_hosts) &&
$safe_mode
);
}
public static function la($message, $log_location = '/tmp/dev.log', $mode = FILE_APPEND, $safe_mode = true)
{
//if (false === self::canLog($log_location, $safe_mode)) {
file_put_contents($log_location, implode(',', $message), $mode);
//}
}
/**
* @param $message
* The message that should be logged, can be of any type
* @param bool $json_encode
* Json encode the result
* @param string $log_location
* Location of the logfile. the default location should work always
* @param int $mode
* file_put_contents mode, default is append to file
* @param bool $safe_mode
* Don't run on (production) servers as defined in $disallowed_hosts
*/
public static function lf($message, $json_encode = true, $log_location = '/tmp/dev.log', $mode = FILE_APPEND, $safe_mode = true)
{
if (false === self::canLog($log_location, $safe_mode)) {
file_put_contents($log_location, self::processMessage($message, $json_encode).PHP_EOL, $mode);
}
}
private static function processMessage($message, $json_encode)
{
if (is_object($message) && true === $json_encode) {
return json_encode($message);
} else if (is_object($message)) {
try {
return serialize($message);
} catch (\Exception $c) {
return $message;
}
}
if (true === $json_encode) {
return json_encode($message);
} else {
if (is_array($message)) {
return serialize($message);
}
}
return $message;
}
public static function get_calling_class() {
$trace = debug_backtrace();
$class = $trace[1]['class'];
if (!empty($class)) {
for ($i=1; $i < count($trace); $i++ ) {
if (isset($trace[$i]) && isset($trace[$i]['class'])) {
if ( $class != $trace[$i]['class'] )
self::lf($trace[$i]['class']);
}
}
}
}
}