getLevelName() public static method

Returns the text display of the specified level.
public static getLevelName ( integer $level ) : string
$level integer the message level, e.g. [[LEVEL_ERROR]], [[LEVEL_WARNING]].
return string the text display of the level
 /**
  * Stores log messages to sentry.
  */
 public function export()
 {
     foreach ($this->messages as $message) {
         list($msg, $level, $catagory, $timestamp, $traces) = $message;
         $errStr = '';
         $options = ['level' => \yii\log\Logger::getLevelName($level), 'extra' => []];
         $templateData = null;
         if (is_array($msg)) {
             $errStr = isset($msg['msg']) ? $msg['msg'] : '';
             if (isset($msg['data'])) {
                 $options['extra'] = $msg['data'];
             }
         } elseif (is_a($msg, \yii\base\Exception::class)) {
             $errStr = $msg->getMessage();
             $traces = $msg->getTrace();
         } else {
             $errStr = $msg;
         }
         // Store debug trace in extra data
         $traces = array_map(function ($v) {
             $file = isset($v['file']) ? $v['file'] : 'unknown file';
             $line = isset($v['line']) ? $v['line'] : 'unknown line';
             $class = isset($v['class']) ? $v['class'] : 'unknown class';
             $function = isset($v['function']) ? $v['function'] : 'unknown function';
             return $file . PHP_EOL . "{$class}::{$function} [{$line}]";
         }, $traces);
         if (!empty($traces)) {
             $options['extra']['traces'] = $traces;
         }
         $this->client->captureMessage($errStr, [], $options, false);
     }
 }
Beispiel #2
0
 protected static function getLevelName($level)
 {
     if (in_array($level, [Logger::LEVEL_PROFILE, Logger::LEVEL_PROFILE_BEGIN, Logger::LEVEL_PROFILE_END, Logger::LEVEL_TRACE])) {
         return 'debug';
     }
     return Logger::getLevelName($level);
 }
Beispiel #3
0
 /**
  * @inheritdoc
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         $text = VarDumper::export($text);
     }
     $prefix = $this->getMessagePrefix($message);
     return "{$prefix}[{$level}][{$category}] {$text}";
 }
Beispiel #4
0
 /**
  * @inheritdoc
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         $text = var_export($text, true);
     }
     $prefix = $this->prefix ? call_user_func($this->prefix, $message) : $this->getMessagePrefix($message);
     return "{$prefix}[{$level}][{$category}] {$text}";
 }
 /**
  * Sends log message to Sentry instance.
  */
 public function export()
 {
     foreach ($this->messages as $message) {
         $options = ['level' => Logger::getLevelName($message[1])];
         $logMessage = $this->formatMessage($message);
         $text = $message[0];
         if (!is_string($text) && $text instanceof \Exception) {
             $logMessage = $text->getMessage() . "\n\n" . $logMessage;
         }
         $this->getClient()->captureMessage($logMessage, [], $options);
     }
 }
Beispiel #6
0
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         // exceptions may not be serializable if in the call stack somewhere is a Closure
         if ($text instanceof \Exception) {
             $text = (string) $text;
         } else {
             $text = VarDumper::export($text);
         }
     }
     $prefix = $this->getMessagePrefix($message);
     return "Level: " . ucfirst($level) . " \n\n Time: " . date('F j, Y, g:i a (T)', $timestamp) . "\n\n Message:\n {$text} \n\n {$prefix} \n\n";
 }
Beispiel #7
0
 /**
  * @inheritdoc
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         // exceptions may not be serializable if in the call stack somewhere is a Closure
         if ($text instanceof \Throwable || $text instanceof \Exception) {
             $text = (string) $text;
         } else {
             $text = VarDumper::export($text);
         }
     }
     $prefix = $this->getMessagePrefix($message);
     return "{$prefix}[{$level}][{$category}] {$text}";
 }
Beispiel #8
0
 /**
  * Exports log [[messages]] to a specific destination.
  */
 public function export()
 {
     foreach ($this->messages as $message) {
         list($msg, $level, $category, $timestamp, $traces) = $message;
         $levelName = Logger::getLevelName($level);
         if (!in_array($levelName, ['error', 'warning', 'info'])) {
             $levelName = 'error';
         }
         $data = ['timestamp' => gmdate('Y-m-d\\TH:i:s\\Z', $timestamp), 'level' => $levelName, 'tags' => ['category' => $category], 'message' => $msg];
         if (!empty($traces)) {
             $data['sentry.interfaces.Stacktrace'] = ['frames' => Raven_Stacktrace::get_stack_info($traces)];
         }
         $this->client->capture($data, false);
     }
 }
Beispiel #9
0
 /**
  * Writes log messages to a file.
  */
 public function export()
 {
     $data = [];
     foreach ($this->messages as $message) {
         list($text, $level, $category, $timestamp) = $message;
         $level = Logger::getLevelName($level);
         //$messageString = date('Y-m-d H:i:s', $timestamp) . " [$level][$category] $text";
         //$messageArray = explode(PHP_EOL, $messageString);
         $needSkip = strpos($category, self::I18N_MESSAGE_KEY) !== false;
         if (strpos(LOG_LEVEL, $level) !== false && !$needSkip) {
             //$data[$level][] = $messageArray;
             $data[$level] = $text;
         }
     }
     foreach ($data as $key => $value) {
         LogUtil::$key($value);
     }
 }
Beispiel #10
0
 /**
  * (non-PHPdoc)
  * @see \yii\log\Target::formatMessage()
  */
 public function formatMessage($message)
 {
     if (!$this->with_microtime) {
         return parent::formatMessage($message);
     }
     list($text, $level, $category, $timestamp) = $message;
     $level = \yii\log\Logger::getLevelName($level);
     if (!is_string($text)) {
         $text = VarDumper::export($text);
     }
     $traces = [];
     if (isset($message[4])) {
         foreach ($message[4] as $trace) {
             $traces[] = "in {$trace['file']}:{$trace['line']}";
         }
     }
     $prefix = $this->getMessagePrefix($message);
     return (new \DateTime())->setTimestamp($timestamp)->format('Y-m-d H:i:s') . ':' . str_pad(round(($timestamp - floor($timestamp)) * 1000000), 6, '0', STR_PAD_RIGHT) . " {$prefix}[{$level}][{$category}] {$text}" . (empty($traces) ? '' : "\n    " . implode("\n    ", $traces));
 }
 /**
  * Formats a log message for display as a string.
  * @param array $message the log message to be formatted.
  * The message structure follows that in [[Logger::messages]].
  * @return string the formatted message
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         // exceptions may not be serializable if in the call stack somewhere is a Closure
         if ($text instanceof \Throwable || $text instanceof \Exception) {
             $text = sprintf('[%s] %s', $text->getCode(), $text->getMessage());
         } elseif (is_array($text)) {
             /*
              * Only VarDump if array, don't want to inadvertently log objects with sensitive info
              */
             $text = VarDumper::export($text);
         } else {
             $text = sprintf('Unsupported object of type %s sent to logger', get_class($text));
         }
     }
     $prefix = $this->getMessagePrefix($message);
     return date('Y-m-d H:i:s', $timestamp) . " {$prefix}[{$level}][{$category}] {$text}";
 }
 /**
  * Formats a log message for display as a string.
  * @param array $message the log message to be formatted.
  * The message structure follows that in Logger::messages.
  * @return string the formatted message
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         // exceptions may not be serializable if in the call stack somewhere is a Closure
         if ($text instanceof \Exception) {
             $text = (string) $text;
         } else {
             $text = VarDumper::export($text);
         }
     }
     $traces = [];
     if (isset($message[4])) {
         foreach ($message[4] as $trace) {
             $traces[] = "in {$trace['file']}:{$trace['line']}";
         }
     }
     $prefix = $this->getMessagePrefix($message);
     return date('Y-m-d H:i:s', $timestamp) . '.' . (strpos($timestamp, '.') ? str_pad(explode('.', (string) $timestamp)[1], 10, '0') : '0000000000') . " {$prefix}[{$level}][{$category}] {$text}" . (empty($traces) ? '' : "\n    " . implode("\n    ", $traces));
 }
Beispiel #13
0
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = log\Logger::getLevelName($level);
     if (!is_string($text)) {
         $text = VarDumper::export($text);
     }
     $traces = [];
     if (isset($message[4])) {
         foreach ($message[4] as $trace) {
             $traces[] = "in {$trace['file']}:{$trace['line']}";
         }
     }
     $prefix = $this->getMessagePrefix($message);
     $text = str_replace(array("\t", "\n"), '', $text);
     $logs = ['time' => date('Y-m-d H:i:s', $timestamp), 'ip' => $prefix['ip'], 'reqId' => $prefix['reqId'], 'module' => $prefix['module'], 'level' => $level, 'category' => $category, 'text' => $text];
     if (!empty($traces)) {
         $logs['traces'] = $traces[0];
     }
     return implode("\t", $logs);
 }
 /**
  * @param $message
  *
  * @return string
  */
 private function generateLabel($message)
 {
     $label = '';
     //Add date to log
     if (true == $this->displayDate) {
         $label .= '[' . date($this->dateFormat, time()) . ']';
     }
     //Add category to label
     if (true == $this->displayCategory) {
         $label .= "[" . $message[2] . "]";
     }
     $level = Logger::getLevelName($message[1]);
     $tmpLevel = "[{$level}]";
     if (Console::streamSupportsAnsiColors(\STDOUT)) {
         if (isset($this->color[$level])) {
             $tmpLevel = Console::ansiFormat($tmpLevel, [$this->color[$level]]);
         } else {
             $tmpLevel = Console::ansiFormat($tmpLevel, [Console::BOLD]);
         }
     }
     $label .= $tmpLevel;
     return $label;
 }
Beispiel #15
0
 /**
  * Exports log [[messages]] to a specific destination.
  */
 public function export()
 {
     foreach ($this->messages as $message) {
         list($msg, $level, $category, $timestamp, $traces) = $message;
         $levelName = Logger::getLevelName($level);
         if (!in_array($levelName, ['error', 'warning', 'info'])) {
             $levelName = 'error';
         }
         if (is_array($msg)) {
             if (isset($msg['data'])) {
                 $new_extras = $msg['data'];
                 unset($msg['data']);
             }
             if (isset($msg['msg'])) {
                 $new_msg = $msg['msg'];
                 unset($msg['msg']);
             } else {
                 $new_msg = 'Unknown event format';
                 // deliver event data even if the format doesn't fit
                 $new_extras = array_merge($new_extras, $msg);
                 $new_tags = ['format' => 'unknown'];
             }
         }
         $data = ['timestamp' => gmdate('Y-m-d\\TH:i:s\\Z', $timestamp), 'level' => $levelName, 'tags' => ['category' => $category], 'message' => isset($new_msg) ? $new_msg : $msg];
         if (isset($new_tags)) {
             $data['tags'] = array_merge($new_tags, $this->client->get_tags(), $this->client->context->extra);
         }
         if (isset($new_extras)) {
             $data['extra'] = array_merge($new_extras, $this->client->tags, $this->client->context->tags);
         }
         if (!empty($traces)) {
             $data['sentry.interfaces.Stacktrace'] = ['frames' => Raven_Stacktrace::get_stack_info($traces)];
         }
         $this->client->capture($data, false);
     }
 }
 /**
  * Stores log messages to sentry.
  */
 public function export()
 {
     foreach ($this->messages as $message) {
         list($msg, $level, $catagory, $timestamp, $traces) = $message;
         $options = ['level' => log\Logger::getLevelName($level), 'extra' => []];
         $templateData = null;
         if (is_array($msg)) {
             $errStr = isset($msg['msg']) ? $msg['msg'] : '';
             if (isset($msg['data'])) {
                 $options['extra'] = $msg['data'];
             }
         } else {
             $errStr = $msg;
         }
         // Store debug trace in extra data
         $traces = array_map(function ($v) {
             return "{$v['file']}" . PHP_EOL . "{$v['class']}::{$v['function']} [{$v['line']}]";
         }, $traces);
         if (!empty($traces)) {
             $options['extra']['traces'] = $traces;
         }
         $this->client->captureMessage($errStr, array(), $options, false);
     }
 }
 /**
  * Generating tag name based on $tagFormat
  *
  * @param $messages
  * @return string
  */
 private function createTag($messages)
 {
     return str_replace(['%date', '%timestamp', '%level'], [date('Y-m-d H:i:s'), time(), Logger::getLevelName($messages[0][1])], $this->tagFormat);
 }
Beispiel #18
0
 /**
  * Transform log message to assoc.
  *
  * @param array $message The log message.
  *
  * @return array
  */
 protected function prepareMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     $timestamp = date('c', $timestamp);
     $result = ArrayHelper::merge($this->parseText($text), ['level' => $level, 'category' => $category, '@timestamp' => $timestamp]);
     if (isset($message[4]) === true) {
         $result['trace'] = $message[4];
     }
     return $result;
 }
Beispiel #19
0
 /**
  * Formats a log message for display as a string.
  * @param array $message the log message to be formatted.
  * The message structure follows that in [[Logger::messages]].
  * @return string the formatted message
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         $text = VarDumper::export($text);
     }
     $traces = [];
     if (isset($message[4])) {
         foreach ($message[4] as $trace) {
             $traces[] = "in {$trace['file']}:{$trace['line']}";
         }
     }
     $prefix = $this->getMessagePrefix($message);
     return date('Y-m-d H:i:s', $timestamp) . " {$prefix}[{$level}][{$category}] {$text}" . (empty($traces) ? '' : "\n    " . implode("\n    ", $traces));
 }
Beispiel #20
0
 /**
  * Compile log message. Adds remote ip address and trail id if enabled.
  *
  * @param array $message
  * @return array
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     $msg = ['timestamp' => date('Y/m/d H:i:s', $timestamp), 'level' => $level, 'category' => $category, 'message' => $text];
     if ($this->enableIp) {
         $msg['ip'] = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0';
     }
     if ($this->enableTrail) {
         $msg['trail'] = $this->trail;
     }
     return $msg;
 }
 /**
  * Default line formatting
  *
  * @param string $text the actual log-text
  * @param integer $level the log level
  * @param string $category the log category
  * @param integer $timestamp the events timestamp
  * @return string the formatted line
  */
 public function formatLine($text, $level, $category, $timestamp)
 {
     return sprintf("%-19s [%-7s] [%s]\n                    %s", Yii::$app->formatter->asDatetime($timestamp, 'php:d.m.Y H:i:s'), strtoupper(Logger::getLevelName($level)), $category, $text);
 }
 /**
  * @inheritdoc
  */
 public function formatMessage($loggerMessage)
 {
     // Retrieve the relevant pieces of data from the logger message data.
     list($messageContent, $level, $category) = $loggerMessage;
     // Begin assembling the data that we will JSON-encode for the log.
     $logData = array();
     // If the prefix is already a JSON string, decode it (to avoid
     // double-encoding it below).
     $prefix = $this->getMessagePrefix($loggerMessage);
     $prefixData = $this->extractPrefixKeyValueData($prefix);
     // Only include the prefix data and/or raw prefix if there was content.
     if ($prefixData) {
         foreach ($prefixData as $key => $value) {
             $logData[$key] = $value;
         }
     } elseif ($prefix) {
         $logData['prefix'] = $prefix;
     }
     $logData['level'] = Logger::getLevelName($level);
     $logData['category'] = $category;
     $logData['message'] = $this->extractMessageContentData($messageContent);
     // Format the data as a JSON string and return it.
     return Json::encode($logData);
 }
 /**
  * Returns a properly formatted message attachment for Slack API.
  *
  * @param array $message
  *
  * @return array
  */
 protected function formatMessageAttachment($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $attachment = ['fallback' => $this->encodeMessage($this->formatMessage($message)), 'title' => ucwords(Logger::getLevelName($level)), 'fields' => [['title' => 'Level', 'value' => Logger::getLevelName($level), 'short' => true], ['title' => 'Category', 'value' => '`' . $this->encodeMessage($category) . '`', 'short' => true]], 'footer' => static::className(), 'ts' => (int) round($timestamp), 'mrkdwn_in' => ['fields', 'text']];
     if (isset($this->prefix)) {
         $attachment['fields'][] = ['title' => 'Prefix', 'value' => '`' . $this->encodeMessage(call_user_func($this->prefix, $message)) . '`', 'short' => true];
     }
     if (isset(\Yii::$app)) {
         $this->insertRequestIntoAttachment($attachment);
         $this->insertUserIntoAttachment($attachment);
         $this->insertSessionIntoAttachment($attachment);
     }
     if (isset($this->colors[$level])) {
         $attachment['color'] = $this->colors[$level];
     }
     if (!is_string($text)) {
         if ($text instanceof \Throwable || $text instanceof \Exception) {
             $text = (string) $text;
         } else {
             $text = VarDumper::export($text);
         }
     }
     $attachment['text'] = "```\n" . $this->encodeMessage($text) . "\n```";
     if (isset($message[4]) && !empty($message[4])) {
         $this->insertTracesIntoAttachment($message[4], $attachment);
     }
     return $attachment;
 }
 /**
  * Formats a log message.
  * The message structure follows that in [[Logger::messages]].
  * @param array $message the log message to be formatted.
  * @return string the formatted message
  */
 public function formatMessage($message)
 {
     list($text, $level, $category, $timestamp) = $message;
     $level = Logger::getLevelName($level);
     if (!is_string($text)) {
         $text = var_export($text, true);
     }
     $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1';
     return date('Y/m/d H:i:s', $timestamp) . " [{$ip}] [{$level}] [{$category}] {$text}";
 }
Beispiel #25
0
use yii\grid\GridView;
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $searchModel backend\models\search\SystemLogSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('backend', 'System Logs');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="system-log-index">

    <p>
        <?php 
echo Html::a(Yii::t('backend', 'Clear'), false, ['class' => 'btn btn-danger', 'data-method' => 'delete']);
?>
    </p>

    <?php 
// echo $this->render('_search', ['model' => $searchModel]);
?>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], ['attribute' => 'level', 'value' => function ($model) {
    return \yii\log\Logger::getLevelName($model->level);
}, 'filter' => [\yii\log\Logger::LEVEL_ERROR => 'error', \yii\log\Logger::LEVEL_WARNING => 'warning', \yii\log\Logger::LEVEL_INFO => 'info', \yii\log\Logger::LEVEL_TRACE => 'trace', \yii\log\Logger::LEVEL_PROFILE_BEGIN => 'profile begin', \yii\log\Logger::LEVEL_PROFILE_END => 'profile end']], 'category', 'prefix', ['attribute' => 'log_time', 'format' => 'datetime', 'value' => function ($model) {
    return (int) $model->log_time;
}], ['class' => 'yii\\grid\\ActionColumn', 'template' => '{view}{delete}']]]);
?>

</div>
Beispiel #26
0
<?php

use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $model backend\modules\log\models\SystemLog */
$this->title = $model->id;
$this->params['breadcrumbs'][] = ['label' => Yii::t('backend', 'System Logs'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="box box-primary">
    <div class="box-body">

    <p>
        <?php 
echo Html::a(Yii::t('backend', 'Delete'), ['delete', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => Yii::t('backend', 'Are you sure you want to delete this item?'), 'method' => 'post']]);
?>
    </p>

    <?php 
echo DetailView::widget(['model' => $model, 'attributes' => ['id', ['attribute' => 'level', 'value' => \yii\log\Logger::getLevelName($model->level)], 'category', 'log_time:datetime', 'prefix:ntext', ['attribute' => 'message', 'format' => 'raw', 'value' => Html::tag('pre', $model->message, ['style' => 'white-space: pre-wrap'])]]]);
?>

    </div>
</div>
Beispiel #27
0
<?php

use yii\bootstrap\Html;
use yii\grid\GridView;
use yii\log\Logger;
/* @var $this yii\web\View */
/* @var $searchModel backend\models\search\LogSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('backend', 'Logs');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="log-index">

    <p>
        <?php 
echo Html::a(Yii::t('backend', 'Clear'), false, ['class' => 'btn btn-danger', 'data-method' => 'delete']);
?>
    </p>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['attribute' => 'level', 'value' => function ($model) {
    return Logger::getLevelName($model->level);
}, 'filter' => [Logger::LEVEL_ERROR => 'error', Logger::LEVEL_WARNING => 'warning', Logger::LEVEL_INFO => 'info', Logger::LEVEL_TRACE => 'trace', Logger::LEVEL_PROFILE_BEGIN => 'profile begin', Logger::LEVEL_PROFILE_END => 'profile end']], 'category', ['attribute' => 'log_time', 'format' => 'datetime', 'value' => function ($model) {
    return (int) $model->log_time;
}], 'prefix', ['class' => 'yii\\grid\\ActionColumn', 'template' => '{view} {delete}']]]);
?>

</div>
Beispiel #28
0
 /**
  * @return string
  */
 public function getLevelName()
 {
     return Logger::getLevelName($this->level);
 }
Beispiel #29
0
    } else {
        return $data['timestamp'];
    }
}, 'headerOptions' => ['class' => 'sort-numerical text-align-center'], 'footerOptions' => ['class' => 'sort-numerical text-align-center font-weight-bold th'], 'contentOptions' => ['class' => 'nowrap font-size-10px text-align-center']], ['attribute' => 'level', 'value' => function ($data) {
    switch ($data['level']) {
        case Logger::LEVEL_ERROR:
            $class = 'label label-danger';
            break;
        case Logger::LEVEL_WARNING:
            $class = 'label label-warning';
            break;
        case Logger::LEVEL_INFO:
            $class = 'label label-primary';
            break;
        default:
            $class = 'label label-default';
            break;
    }
    return Html::tag('span', Logger::getLevelName($data['level']), ['class' => $class]);
}, 'format' => 'html', 'filter' => [Logger::LEVEL_TRACE => ' Trace ', Logger::LEVEL_INFO => ' Info ', Logger::LEVEL_WARNING => ' Warning ', Logger::LEVEL_ERROR => ' Error '], 'filterInputOptions' => ['class' => 'form-control chosen-select', 'id' => null, 'prompt' => ' All '], 'headerOptions' => ['class' => 'text-align-center'], 'footerOptions' => ['class' => 'text-align-center font-weight-bold th'], 'contentOptions' => ['class' => 'text-align-center']], ['attribute' => 'category', 'headerOptions' => ['class' => 'text-align-center'], 'footerOptions' => ['class' => 'text-align-center font-weight-bold th'], 'contentOptions' => ['class' => 'font-size-10px']], ['attribute' => 'message', 'value' => function ($data) {
    $description = Html::encode(is_string($data['message']) ? $data['message'] : VarDumper::export($data['message']));
    $message = '<a href="javascript:;" class="spoiler-title" data-title="" data-content="' . $description . '">' . Stringy::substr(Stringy::collapseWhitespace($description), 0, 60, 'UTF-8') . '...' . '</a>';
    $trace = '';
    if (!empty($data['trace'])) {
        $trace .= Html::ul($data['trace'], ['class' => 'trace', 'item' => function ($trace) {
            return "<li>{$trace['file']} ({$trace['line']})</li>";
        }]);
    }
    $message .= '<div class="spoiler-content"><strong>Message: </strong><br /><pre>' . $description . '</pre>' . (!empty($trace) ? '<br /><p><strong>Trace: </strong>' . $trace . '</p>' : '') . '</div>';
    return $message;
}, 'format' => 'html', 'options' => ['width' => '50%'], 'contentOptions' => ['class' => 'spoiler']]]]);
Beispiel #30
0
use yii\helpers\VarDumper;
use yii\log\Logger;
?>
<h1>Log Messages</h1>
<?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'id' => 'log-panel-detailed-grid', 'options' => ['class' => 'detail-grid-view table-responsive'], 'filterModel' => $searchModel, 'filterUrl' => $panel->getUrl(), 'rowOptions' => function ($model, $key, $index, $grid) {
    switch ($model['level']) {
        case Logger::LEVEL_ERROR:
            return ['class' => 'danger'];
        case Logger::LEVEL_WARNING:
            return ['class' => 'warning'];
        case Logger::LEVEL_INFO:
            return ['class' => 'success'];
        default:
            return [];
    }
}, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], ['attribute' => 'time', 'value' => function ($data) {
    $timeInSeconds = $data['time'] / 1000;
    $millisecondsDiff = (int) (($timeInSeconds - (int) $timeInSeconds) * 1000);
    return date('H:i:s.', $timeInSeconds) . sprintf('%03d', $millisecondsDiff);
}, 'headerOptions' => ['class' => 'sort-numerical']], ['attribute' => 'level', 'value' => function ($data) {
    return Logger::getLevelName($data['level']);
}, 'filter' => [Logger::LEVEL_TRACE => ' Trace ', Logger::LEVEL_INFO => ' Info ', Logger::LEVEL_WARNING => ' Warning ', Logger::LEVEL_ERROR => ' Error ']], 'category', ['attribute' => 'message', 'value' => function ($data) {
    $message = Html::encode(is_string($data['message']) ? $data['message'] : VarDumper::export($data['message']));
    if (!empty($data['trace'])) {
        $message .= Html::ul($data['trace'], ['class' => 'trace', 'item' => function ($trace) {
            return "<li>{$trace['file']} ({$trace['line']})</li>";
        }]);
    }
    return $message;
}, 'format' => 'html', 'options' => ['width' => '50%']]]]);