Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add cleanLog in tswconfig.js to hide default logs #449

Merged
merged 3 commits into from
Jun 2, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 62 additions & 39 deletions benchmark/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion benchmark/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
"xl_close_port": "^1.0.1"
},
"dependencies": {
"@tswjs/open-platform-plugin": "^1.1.2"
"@tswjs/open-platform-plugin": "^1.3.0"
}
}
3 changes: 2 additions & 1 deletion benchmark/start/tswconfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ module.exports = {
winstonTransports: [
new winston.transports.File({ filename: "error.log", level: "error" }),
new winston.transports.File({ filename: "debug.log", level: "debug" })
]
],
cleanLog: true
};
97 changes: 62 additions & 35 deletions lib/core/runtime/capture/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import currentContext, { RequestLog, Context } from "../../context";
import logger from "../../logger/index";

type requestProtocol = "http:" | "https:";
let isCleanLog = false;

/**
* Convert a URL instance to a http.request options
Expand Down Expand Up @@ -84,8 +85,10 @@ export const hack = <T extends typeof http.request>(
method, hostname, path, port
} = options;

logger.debug(`${logPre} Request begin. ${
method} ${hostname}${port ? `:${port}` : ""} ~ ${path}`);
if (!isCleanLog) {
logger.debug(`${logPre} Request begin. ${
method} ${hostname}${port ? `:${port}` : ""} ~ ${path}`);
}

const requestLog: Partial<RequestLog> = {
SN: context.captureSN,
Expand All @@ -112,9 +115,11 @@ export const hack = <T extends typeof http.request>(
const finishRequest = (): void => {
context.captureRequests.push(requestLog as RequestLog);

logger.debug(`${logPre} Record request info. Response body length: ${
requestLog.responseLength
}`);
if (!isCleanLog) {
logger.debug(`${logPre} Record request info. Response body length: ${
requestLog.responseLength
}`);
}
};

request.once("socket", (socket: Socket): void => {
Expand All @@ -131,35 +136,50 @@ export const hack = <T extends typeof http.request>(
timestamps.dnsTime = timestamps.onLookUp.getTime()
- timestamps.onSocket.getTime();

logger.debug(`${logPre} Dns lookup ${host} -> ${
address || "null"}. Cost ${timestamps.dnsTime}ms`);
if (!isCleanLog) {
logger.debug(`${logPre} Dns lookup ${host} -> ${
address || "null"}. Cost ${timestamps.dnsTime}ms`);
}

if (err) {
logger.error(`${logPre} Lookup error ${err.stack}`);
if (isCleanLog) {
logger.error(`${logPre} Request: ${JSON.stringify(requestLog)}`);
}

logger.error(`${logPre} Lookup ${host} -> ${
address || "null"}, error ${err.stack}`);
}
});
}

socket.once("connect", (): void => {
timestamps.socketConnect = new Date();

logger.debug(`${logPre} Socket connected. Remote: ${
socket.remoteAddress
}:${socket.remotePort}. Cost ${
timestamps.socketConnect.getTime() - timestamps.onSocket.getTime()
} ms`);
if (!isCleanLog) {
logger.debug(`${logPre} Socket connected. Remote: ${
socket.remoteAddress
}:${socket.remotePort}. Cost ${
timestamps.socketConnect.getTime() - timestamps.onSocket.getTime()
} ms`);
}
});

if (socket.remoteAddress) {
timestamps.dnsTime = 0;

logger.debug(`${logPre} Socket reused. Remote: ${
socket.remoteAddress
}:${socket.remotePort}`);
if (!isCleanLog) {
logger.debug(`${logPre} Socket reused. Remote: ${
socket.remoteAddress
}:${socket.remotePort}`);
}
}
});

request.once("error", (error: Error) => {
if (isCleanLog) {
logger.error(`${logPre} Request: ${JSON.stringify(requestLog)}`);
}

logger.error(`${logPre} Request error. Stack: ${error.stack}`);
finishRequest();
clearDomain();
Expand All @@ -183,11 +203,13 @@ export const hack = <T extends typeof http.request>(

requestLog.requestHeader = (request as any)._header;
requestLog.requestBody = requestBody;
logger.debug(`${logPre} Request send finish. Body size ${
length
}. Cost: ${
timestamps.requestFinish.getTime() - timestamps.onSocket.getTime()
} ms`);
if (!isCleanLog) {
logger.debug(`${logPre} Request send finish. Body size ${
length
}. Cost: ${
timestamps.requestFinish.getTime() - timestamps.onSocket.getTime()
} ms`);
}

clearDomain();
});
Expand All @@ -203,16 +225,18 @@ export const hack = <T extends typeof http.request>(
requestLog.clientIp = socket.localAddress;
requestLog.clientPort = socket.localPort;

logger.debug(`${logPre} Request on response. Socket chain: ${
socket.localAddress
}:${socket.localPort} > ${
socket.remoteAddress
}:${socket.remotePort}. Response status code: ${
response.statusCode
}. Cost: ${
timestamps.onResponse.getTime()
if (!isCleanLog) {
logger.debug(`${logPre} Request on response. Socket chain: ${
socket.localAddress
}:${socket.localPort} > ${
socket.remoteAddress
}:${socket.remotePort}. Response status code: ${
response.statusCode
}. Cost: ${
timestamps.onResponse.getTime()
- timestamps.onSocket.getTime()
} ms`);
} ms`);
}

// responseInfo can't retrieve data until response "end" event
const responseInfo = captureIncoming(response);
Expand Down Expand Up @@ -248,12 +272,14 @@ export const hack = <T extends typeof http.request>(

requestLog.responseBody = responseInfo.body.toString("base64");

logger.debug(`${logPre} Response on end. Body size:${
requestLog.responseLength
}. Cost: ${
timestamps.responseClose.getTime()
if (!isCleanLog) {
logger.debug(`${logPre} Response on end. Body size:${
requestLog.responseLength
}. Cost: ${
timestamps.responseClose.getTime()
- timestamps.onSocket.getTime()
} ms`);
} ms`);
}

finishRequest();
});
Expand All @@ -266,6 +292,7 @@ let hacked = false;
let originHttpRequest = null;
let originHttpsRequest = null;
export const requestHack = (): void => {
isCleanLog = (global.tswConfig && global.tswConfig.cleanLog) || false;
if (!hacked) {
originHttpRequest = http.request;
originHttpsRequest = https.request;
Expand Down
Loading