whatap 0.5.17 → 0.5.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/logger.js CHANGED
@@ -213,23 +213,23 @@
213
213
  for (var i = 0; i < files.length; i++) {
214
214
  var stat = fs.statSync(path.join(dir, files[i]));
215
215
  if (stat.isDirectory()) {
216
- return true;
216
+ continue;
217
217
  }
218
218
  var name = files[i];
219
219
  if (name.indexOf(log_prefix) < 0) {
220
- return true;
220
+ continue;
221
221
  }
222
222
  var x = name.lastIndexOf('.');
223
223
  if (x < 0) {
224
- return true;
224
+ continue;
225
225
  }
226
226
  var date = name.substr(log_prefix.length, (x - log_prefix.length));
227
227
  if (date.length != 8) {
228
- return true;
228
+ continue;
229
229
  }
230
- var d = DateUtil.yyyymmdd(date);
231
- var fileUnit = DateUtil.getDateUnit(d);
232
230
  try {
231
+ var d = DateUtil.yyyymmdd(date);
232
+ var fileUnit = DateUtil.getDateUnit(d);
233
233
  if (nowUnit - fileUnit > conf.log_keep_days) {
234
234
  let filePath = `${dir}/${files[i]}`;
235
235
  fs.rmSync(filePath);
@@ -159,6 +159,7 @@ PrismaObserver.prototype.hookUseMiddleware = function(prismaInstance) {
159
159
 
160
160
  const sql_step = new SqlStepX();
161
161
  sql_step.start_time = ctx.getElapsedTime();
162
+ sql_step.elapsed = 0;
162
163
  ctx.profile.push(sql_step);
163
164
 
164
165
  const modelName = params.model || 'unknown';
@@ -187,59 +188,60 @@ PrismaObserver.prototype.hookUseMiddleware = function(prismaInstance) {
187
188
  sql_step.pcrc = crc.value;
188
189
  }
189
190
 
190
- try {
191
- result = await next(params);
192
-
193
- // Raw 쿼리 처리
194
- if (action === "queryRaw" || action === "executeRaw" || action === "queryRawUnsafe" || action === "executeRawUnsafe") {
195
- // SQL 문자열 추출
196
- let sqlString = "";
197
- if (params.args && params.args.length > 0) {
198
- // 번째 인자가 문자열 배열인 경우 (tagged template)
199
- if (params.args[0] && params.args[0].strings && Array.isArray(params.args[0].strings)) {
200
- sqlString = params.args[0].strings.join('');
201
- }
202
- // 첫 번째 인자가 직접 문자열인 경우
203
- else if (typeof params.args[0] === 'string') {
204
- sqlString = params.args[0];
205
- }
191
+ if (action === "queryRaw" || action === "executeRaw" || action === "queryRawUnsafe" || action === "executeRawUnsafe") {
192
+ // SQL 문자열 추출
193
+ let sqlString = "";
194
+ if (params.args && params.args.length > 0) {
195
+ if (params.args[0] && params.args[0].strings && Array.isArray(params.args[0].strings)) {
196
+ sqlString = params.args[0].strings.join('').trim();
197
+ } else if (params.args[0] && params.args[0] && Array.isArray(params.args[0])){
198
+ sqlString = params.args[0].join('').trim();
199
+ } else if (typeof params.args[0] === 'string') {
200
+ sqlString = params.args[0];
206
201
  }
202
+ }
207
203
 
208
- // SQL 문자열이 있으면 처리
209
- if (sqlString && sqlString.length > 0) {
210
- try {
211
- var psql = escapeLiteral(sqlString);
212
- if (psql != null) {
213
- sql_step.hash = psql.sql;
214
- }
204
+ // SQL 문자열이 있으면 처리
205
+ if (sqlString && sqlString.length > 0) {
206
+ try {
207
+ var psql = escapeLiteral(sqlString);
208
+ if (psql != null) {
209
+ sql_step.hash = psql.sql;
210
+ }
215
211
 
216
- // 추가 SQL 정보 처리
217
- var els = new EscapeLiteralSQL(sqlString);
218
- els.process();
219
-
220
- // SQL 파라미터 처리
221
- if (conf.profile_sql_param_enabled) {
222
- var params = params.args.slice(1);
223
- sql_step.setTrue(1);
224
- var crc = {value: 0};
225
- sql_step.p1 = toParamBytes(psql.param, crc);
226
-
227
- if (params && params.length > 0) {
228
- const result = params.map((param) => {
229
- if (typeof param === 'string') {
230
- return `'${param}'`;
231
- }
232
- return param;
233
- }).toString();
234
- sql_step.p2 = toParamBytes(result, crc);
235
- }
236
- sql_step.pcrc = crc.value;
212
+ // 추가 SQL 정보 처리
213
+ var els = new EscapeLiteralSQL(sqlString);
214
+ els.process();
215
+
216
+ // SQL 파라미터 처리
217
+ if (conf.profile_sql_param_enabled) {
218
+ var params = params.args.slice(1);
219
+ sql_step.setTrue(1);
220
+ var crc = { value: 0 };
221
+ sql_step.p1 = toParamBytes(psql.param, crc);
222
+
223
+ if (params && params.length > 0) {
224
+ const result = params.map((param) => {
225
+ if (typeof param === 'string') {
226
+ return `'${param}'`;
227
+ }
228
+ return param;
229
+ }).toString();
230
+ sql_step.p2 = toParamBytes(result, crc);
237
231
  }
238
- } catch (e) {
239
- Logger.printError("WHATAP-305", "escapeLiteral error", e, false);
232
+ sql_step.pcrc = crc.value;
240
233
  }
234
+ } catch (e) {
235
+ Logger.printError("WHATAP-305", "escapeLiteral error", e, false);
241
236
  }
237
+ }
238
+ }
239
+ try {
242
240
 
241
+ result = await next(params);
242
+
243
+ // Raw 쿼리 처리
244
+ if (action === "queryRaw" || action === "executeRaw" || action === "queryRawUnsafe" || action === "executeRawUnsafe") {
243
245
  // Raw 쿼리 결과셋 처리
244
246
  if ((action === "queryRaw" || action === "queryRawUnsafe") && result) {
245
247
  let recordCount = 0;
@@ -342,7 +344,7 @@ PrismaObserver.prototype._finishQuery = function(ctx, sql_step) {
342
344
  };
343
345
 
344
346
  PrismaObserver.prototype._handleError = function(ctx, sql_step, err) {
345
- sql_step.elapsed = ctx.getElapsedTime()
347
+ sql_step.elapsed = ctx.getElapsedTime() - sql_step.start_time;
346
348
  ctx.sql_time = (ctx.sql_time || 0) + sql_step.elapsed;
347
349
 
348
350
  TraceSQL.isSlowSQL(ctx);
@@ -351,7 +353,8 @@ PrismaObserver.prototype._handleError = function(ctx, sql_step, err) {
351
353
  StatSql.addSqlTime(ctx.service_hash, sql_step.dbc, sql_step.hash, sql_step.elapsed, true, 0);
352
354
 
353
355
  try {
354
- sql_step.error = StatError.addError("prisma-" + (err.code || "unknown"), err.message, ctx.service_hash, TextTypes.SQL, sql_step.hash);
356
+ const errorClassName = err.name || (err.constructor && err.constructor.name) || "UnknownError";
357
+ sql_step.error = StatError.addError(errorClassName, err.message, ctx.service_hash, TextTypes.SQL, sql_step.hash);
355
358
 
356
359
  if (ctx.error.isZero()) {
357
360
  ctx.error = sql_step.error;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "whatap",
3
3
  "homepage": "http://www.whatap.io",
4
- "version": "0.5.17",
5
- "releaseDate": "20250416",
4
+ "version": "0.5.19",
5
+ "releaseDate": "20250514",
6
6
  "description": "Monitoring and Profiling Service",
7
7
  "main": "index.js",
8
8
  "scripts": {},