diff options
author | Richard Lau <riclau@uk.ibm.com> | 2019-03-13 20:39:51 -0400 |
---|---|---|
committer | Richard Lau <riclau@uk.ibm.com> | 2019-03-15 20:48:38 -0400 |
commit | d2681144974c7568524d1d59a25069dc7c9a6294 (patch) | |
tree | 167e02bb9a0c1aadcb1be8dcecf63e0f7947b80f | |
parent | 969c63a0f1deffaaffcf2bec841bd4a7831559c3 (diff) | |
download | android-node-v8-d2681144974c7568524d1d59a25069dc7c9a6294.tar.gz android-node-v8-d2681144974c7568524d1d59a25069dc7c9a6294.tar.bz2 android-node-v8-d2681144974c7568524d1d59a25069dc7c9a6294.zip |
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>
-rw-r--r-- | doc/api/report.md | 4 | ||||
-rw-r--r-- | src/node_report.cc | 35 | ||||
-rw-r--r-- | test/common/report.js | 4 |
3 files changed, 12 insertions, 31 deletions
diff --git a/doc/api/report.md b/doc/api/report.md index 7cb3493953..a7715751d5 100644 --- a/doc/api/report.md +++ b/doc/api/report.md @@ -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 > ``` diff --git a/src/node_report.cc b/src/node_report.cc index a319f51fdb..2c2616d794 100644 --- a/src/node_report.cc +++ b/src/node_report.cc @@ -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; diff --git a/test/common/report.js b/test/common/report.js index 22a905957e..a9c1d038d2 100644 --- a/test/common/report.js +++ b/test/common/report.js @@ -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 = []; |