mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-30 07:26:53 +08:00
优化http调试日志性能
This commit is contained in:
parent
7b60f8b093
commit
0f6d1135eb
@ -217,10 +217,7 @@ static inline void addHttpListener(){
|
|||||||
consumed = true;
|
consumed = true;
|
||||||
|
|
||||||
if(api_debug){
|
if(api_debug){
|
||||||
auto newInvoker = [invoker, parser](int code,
|
auto newInvoker = [invoker, parser](int code, const HttpSession::KeyValue &headerOut, const HttpBody::Ptr &body) {
|
||||||
const HttpSession::KeyValue &headerOut,
|
|
||||||
const HttpBody::Ptr &body) {
|
|
||||||
|
|
||||||
//body默认为空
|
//body默认为空
|
||||||
ssize_t size = 0;
|
ssize_t size = 0;
|
||||||
if (body && body->remainSize()) {
|
if (body && body->remainSize()) {
|
||||||
@ -228,18 +225,23 @@ static inline void addHttpListener(){
|
|||||||
size = body->remainSize();
|
size = body->remainSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LogContextCapturer log(getLogger(), LDebug, __FILE__, "http api debug", __LINE__);
|
||||||
|
log << "\r\n# request:\r\n" << parser.Method() << " " << parser.FullUrl() << "\r\n";
|
||||||
|
log << "# header:\r\n";
|
||||||
|
|
||||||
|
for (auto &pr : parser.getHeader()) {
|
||||||
|
log << pr.first << " : " << pr.second << "\r\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
auto &content = parser.Content();
|
||||||
|
log << "# content:\r\n" << (content.size() > 4 * 1024 ? content.substr(0, 4 * 1024) : content) << "\r\n";
|
||||||
|
|
||||||
if (size && size < 4 * 1024) {
|
if (size && size < 4 * 1024) {
|
||||||
string contentOut = body->readData(size)->toString();
|
auto response = body->readData(size);
|
||||||
DebugL << "\r\n# request:\r\n" << parser.Method() << " " << parser.FullUrl() << "\r\n"
|
log << "# response:\r\n" << response->data() << "\r\n";
|
||||||
<< "# content:\r\n" << parser.Content() << "\r\n"
|
invoker(code, headerOut, response);
|
||||||
<< "# response:\r\n"
|
|
||||||
<< contentOut << "\r\n";
|
|
||||||
invoker(code, headerOut, contentOut);
|
|
||||||
} else {
|
} else {
|
||||||
DebugL << "\r\n# request:\r\n" << parser.Method() << " " << parser.FullUrl() << "\r\n"
|
log << "# response size:" << size << "\r\n";
|
||||||
<< "# content:\r\n" << parser.Content() << "\r\n"
|
|
||||||
<< "# response size:"
|
|
||||||
<< size << "\r\n";
|
|
||||||
invoker(code, headerOut, body);
|
invoker(code, headerOut, body);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -247,4 +247,16 @@ string HttpMultiFormBody::multiFormBodyPrefix(const HttpArgs &args,const string
|
|||||||
return std::move(body);
|
return std::move(body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HttpBufferBody::HttpBufferBody(Buffer::Ptr buffer) {
|
||||||
|
_buffer = std::move(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
ssize_t HttpBufferBody::remainSize() {
|
||||||
|
return _buffer ? _buffer->size() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Buffer::Ptr HttpBufferBody::readData(size_t size) {
|
||||||
|
return Buffer::Ptr(std::move(_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
}//namespace mediakit
|
}//namespace mediakit
|
||||||
|
@ -69,7 +69,8 @@ class HttpStringBody : public HttpBody{
|
|||||||
public:
|
public:
|
||||||
typedef std::shared_ptr<HttpStringBody> Ptr;
|
typedef std::shared_ptr<HttpStringBody> Ptr;
|
||||||
HttpStringBody(const string &str);
|
HttpStringBody(const string &str);
|
||||||
virtual ~HttpStringBody(){}
|
~HttpStringBody() override = default;
|
||||||
|
|
||||||
ssize_t remainSize() override;
|
ssize_t remainSize() override;
|
||||||
Buffer::Ptr readData(size_t size) override ;
|
Buffer::Ptr readData(size_t size) override ;
|
||||||
|
|
||||||
@ -78,6 +79,22 @@ private:
|
|||||||
mutable string _str;
|
mutable string _str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Buffer类型的content
|
||||||
|
*/
|
||||||
|
class HttpBufferBody : public HttpBody{
|
||||||
|
public:
|
||||||
|
typedef std::shared_ptr<HttpBufferBody> Ptr;
|
||||||
|
HttpBufferBody(Buffer::Ptr buffer);
|
||||||
|
~HttpBufferBody() override = default;
|
||||||
|
|
||||||
|
ssize_t remainSize() override;
|
||||||
|
Buffer::Ptr readData(size_t size) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Buffer::Ptr _buffer;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件类型的content
|
* 文件类型的content
|
||||||
*/
|
*/
|
||||||
@ -93,7 +110,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
HttpFileBody(const std::shared_ptr<FILE> &fp,size_t offset,size_t max_size);
|
HttpFileBody(const std::shared_ptr<FILE> &fp,size_t offset,size_t max_size);
|
||||||
HttpFileBody(const string &file_path);
|
HttpFileBody(const string &file_path);
|
||||||
~HttpFileBody(){};
|
~HttpFileBody() override = default;
|
||||||
|
|
||||||
ssize_t remainSize() override ;
|
ssize_t remainSize() override ;
|
||||||
Buffer::Ptr readData(size_t size) override;
|
Buffer::Ptr readData(size_t size) override;
|
||||||
|
@ -514,6 +514,10 @@ void HttpFileManager::onAccessPath(TcpSession &sender, Parser &parser, const Htt
|
|||||||
|
|
||||||
////////////////////////////////////HttpResponseInvokerImp//////////////////////////////////////
|
////////////////////////////////////HttpResponseInvokerImp//////////////////////////////////////
|
||||||
|
|
||||||
|
void HttpResponseInvokerImp::operator()(int code, const StrCaseMap &headerOut, const Buffer::Ptr &body) const {
|
||||||
|
return operator()(code, headerOut, std::make_shared<HttpBufferBody>(body));
|
||||||
|
}
|
||||||
|
|
||||||
void HttpResponseInvokerImp::operator()(int code, const StrCaseMap &headerOut, const HttpBody::Ptr &body) const{
|
void HttpResponseInvokerImp::operator()(int code, const StrCaseMap &headerOut, const HttpBody::Ptr &body) const{
|
||||||
if (_lambad) {
|
if (_lambad) {
|
||||||
_lambad(code, headerOut, body);
|
_lambad(code, headerOut, body);
|
||||||
|
@ -31,6 +31,7 @@ public:
|
|||||||
HttpResponseInvokerImp(const HttpResponseInvokerLambda0 &lambda);
|
HttpResponseInvokerImp(const HttpResponseInvokerLambda0 &lambda);
|
||||||
HttpResponseInvokerImp(const HttpResponseInvokerLambda1 &lambda);
|
HttpResponseInvokerImp(const HttpResponseInvokerLambda1 &lambda);
|
||||||
|
|
||||||
|
void operator()(int code, const StrCaseMap &headerOut, const Buffer::Ptr &body) const;
|
||||||
void operator()(int code, const StrCaseMap &headerOut, const HttpBody::Ptr &body) const;
|
void operator()(int code, const StrCaseMap &headerOut, const HttpBody::Ptr &body) const;
|
||||||
void operator()(int code, const StrCaseMap &headerOut, const string &body) const;
|
void operator()(int code, const StrCaseMap &headerOut, const string &body) const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user