改进trace

This commit is contained in:
yunwuxin
2016-06-29 18:08:28 +08:00
parent e33eddf7bd
commit 95c92a5f92
2 changed files with 24 additions and 33 deletions

View File

@@ -245,30 +245,10 @@ class Response
*/
public function contentType($contentType, $charset = 'utf-8')
{
$this->contentType = $contentType;
$this->charset = $charset;
$this->header['Content-Type'] = $contentType . '; charset=' . $charset;
return $this;
}
/**
* 获取页面输出类型
* @return string
*/
public function getContentType()
{
return $this->contentType;
}
/**
* 获取页面输出字符集
*/
public function getCharset()
{
return $this->charset;
}
/**
* 获取头部信息
* @param string $name 头部名称

View File

@@ -14,6 +14,7 @@ use think\Config;
use think\Log;
use think\Request;
use think\Response;
use think\response\Redirect;
class Trace
{
@@ -23,25 +24,35 @@ class Trace
$type = isset($config['type']) ? $config['type'] : 'Html';
if ($type !== false && !Request::instance()->isAjax() && $response->getContentType() == 'text/html') {
if ($type !== false) {
$request = Request::instance();
$accept = $request->header('accept');
$contentType = $response->getHeader('Content-Type');
$class = false !== strpos($type, '\\') ? $type : '\\think\\debug\\trace\\' . ucwords($type);
unset($config['type']);
$trace = new $class($config);
$output = $trace->output(Log::getLog());
$content = $response->getContent();
$pos = strripos($content, '</body>');
if (false !== $pos) {
$content = substr($content, 0, $pos) . $output . substr($content, $pos);
if ($response instanceof Redirect) {
//TODO 记录
} elseif (strpos($accept, 'application/json') === 0 || $request->isAjax()) {
//TODO 记录
} elseif (!empty($contentType) && strpos($contentType, 'html') === false) {
//TODO 记录
} else {
$content = $content . $output;
}
$output = $trace->output(Log::getLog());
$response->content($content);
$content = $response->getContent();
$pos = strripos($content, '</body>');
if (false !== $pos) {
$content = substr($content, 0, $pos) . $output . substr($content, $pos);
} else {
$content = $content . $output;
}
$response->content($content);
}
}
}
}