2016-05-16 14:32:06 4351次浏览 1条回答 1 悬赏 10 金钱
[
	'class' => 'yii\log\FileTarget',
	'levels' => ['info','error'],
	'categories' => ['guangdian'],
	'logVars'=>[],
	'logFile' => '@app/runtime/logs/gd'.date('Ymd').'.log',
	'maxFileSize' => 1024 * 5,
	'maxLogFiles' => 150,

]
\Yii::info($action_name.'操作成功 muid='.$muid,'guangdian');

配置和使用 我觉得都没有问题 但是 日志 生成出来 我发现很奇怪
日志如下
2016-05-16 14:12:10 [123.56.193.180][-][-][info][guangdian] CallbackLoginAd------操作成功 muid=4e192b1f9ed70844e94a79eca9c3b59c

in /root/web/baidu.com/controllers/GuangdianController.php:118

跪求去掉 下面 in /root/web/baidu.com/controllers/GuangdianController.php:118 方法

最佳答案

  • naivefang 发布于 2016-05-17 09:15 举报

    默认的日志格式就是 {date}{ip}{userID}{sessionID}{level}{category}{text}{trace}

    不知道有没有理解对你的问题,你希望去掉的 "in xxxxx" 应该就是日志中的{trace}域,目前yii不支持自定义日志格式,你如果非要这么做,只能自己改写yii\log\Target::formatMessage方法,自己格式化自己需要的日志格式。

    该方法的代码如下:

    
    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));
        }
    
    

    你可以实现一个自定义的Target继承自FileTarget,然后在你自己的Target中改写此方法即可。

    1 条回复
    回复于 2016-05-19 15:37 回复

    我在别的项目也是这么用就没有 in XXXXX

    觉得很赞
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
撸sir
助理

撸sir

注册时间:2016-03-28
最后登录:2016-07-28
在线时长:3小时10分
  • 粉丝0
  • 金钱20
  • 威望10
  • 积分150

热门问题