report: use DiagnosticFilename for default filename
PR-URL: https://github.com/nodejs/node/pull/26647 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
969c63a0f1
commit
d268114497
@ -24,7 +24,7 @@ is provided below for reference.
|
||||
"header": {
|
||||
"event": "exception",
|
||||
"trigger": "Exception",
|
||||
"filename": "report.20181221.005011.8974.001.json",
|
||||
"filename": "report.20181221.005011.8974.0.001.json",
|
||||
"dumpEventTime": "2018-12-21T00:50:11Z",
|
||||
"dumpEventTimeStamp": "1545371411331",
|
||||
"processId": 8974,
|
||||
@ -471,7 +471,7 @@ triggered using the Node.js REPL:
|
||||
```raw
|
||||
$ node
|
||||
> process.report.writeReport();
|
||||
Writing Node.js report to file: report.20181126.091102.8480.001.json
|
||||
Writing Node.js report to file: report.20181126.091102.8480.0.001.json
|
||||
Node.js report completed
|
||||
>
|
||||
```
|
||||
|
@ -43,6 +43,7 @@ constexpr double SEC_PER_MICROS = 1e-6;
|
||||
|
||||
namespace report {
|
||||
using node::arraysize;
|
||||
using node::DiagnosticFilename;
|
||||
using node::Environment;
|
||||
using node::Mutex;
|
||||
using node::NativeSymbolDebuggingContext;
|
||||
@ -92,46 +93,26 @@ std::string TriggerNodeReport(Isolate* isolate,
|
||||
const char* trigger,
|
||||
const std::string& name,
|
||||
Local<String> stackstr) {
|
||||
std::ostringstream oss;
|
||||
std::string filename;
|
||||
std::shared_ptr<PerIsolateOptions> options;
|
||||
if (env != nullptr) options = env->isolate_data()->options();
|
||||
|
||||
// Obtain the current time and the pid (platform dependent)
|
||||
// Obtain the current time.
|
||||
TIME_TYPE tm_struct;
|
||||
LocalTime(&tm_struct);
|
||||
// Determine the required report filename. In order of priority:
|
||||
// 1) supplied on API 2) configured on startup 3) default generated
|
||||
if (!name.empty()) {
|
||||
// Filename was specified as API parameter, use that
|
||||
oss << name;
|
||||
// Filename was specified as API parameter.
|
||||
filename = name;
|
||||
} else if (env != nullptr && options->report_filename.length() > 0) {
|
||||
// File name was supplied via start-up option, use that
|
||||
oss << options->report_filename;
|
||||
// File name was supplied via start-up option.
|
||||
filename = options->report_filename;
|
||||
} else {
|
||||
// Construct the report filename, with timestamp, pid and sequence number
|
||||
oss << "report";
|
||||
#ifdef _WIN32
|
||||
oss << "." << std::setfill('0') << std::setw(4) << tm_struct.wYear;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.wMonth;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.wDay;
|
||||
oss << "." << std::setfill('0') << std::setw(2) << tm_struct.wHour;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.wMinute;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.wSecond;
|
||||
#else // UNIX, OSX
|
||||
oss << "." << std::setfill('0') << std::setw(4) << tm_struct.tm_year + 1900;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.tm_mon + 1;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.tm_mday;
|
||||
oss << "." << std::setfill('0') << std::setw(2) << tm_struct.tm_hour;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.tm_min;
|
||||
oss << std::setfill('0') << std::setw(2) << tm_struct.tm_sec;
|
||||
#endif
|
||||
oss << "." << uv_os_getpid();
|
||||
oss << "." << std::setfill('0') << std::setw(3) << ++seq;
|
||||
oss << ".json";
|
||||
filename = *DiagnosticFilename(env != nullptr ? env->thread_id() : 0,
|
||||
"report", "json", seq++);
|
||||
}
|
||||
|
||||
filename = oss.str();
|
||||
// Open the report file stream for writing. Supports stdout/err,
|
||||
// user-specified or (default) generated name
|
||||
std::ofstream outfile;
|
||||
|
@ -7,8 +7,8 @@ const path = require('path');
|
||||
|
||||
function findReports(pid, dir) {
|
||||
// Default filenames are of the form
|
||||
// report.<date>.<time>.<pid>.<seq>.json
|
||||
const format = '^report\\.\\d+\\.\\d+\\.' + pid + '\\.\\d+\\.json$';
|
||||
// report.<date>.<time>.<pid>.<tid>.<seq>.json
|
||||
const format = '^report\\.\\d+\\.\\d+\\.' + pid + '\\.\\d+\\.\\d+\\.json$';
|
||||
const filePattern = new RegExp(format);
|
||||
const files = fs.readdirSync(dir);
|
||||
const results = [];
|
||||
|
Loading…
x
Reference in New Issue
Block a user