UNPKG

1.76 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const helpers_1 = require("./helpers");
4const logger_1 = require("../logger");
5const __1 = require("../..");
6const traceSpanLogger = logger_1.getLogger({ logLevel: logger_1.DEFAULT_LOG_LEVEL });
7function TraceSpan(target, propertyKey, descriptor) {
8 const method = descriptor.value || target;
9 const wrapper = function () {
10 const currentTrace = __1.ClsService.getTrace();
11 if (currentTrace) {
12 currentTrace.span();
13 }
14 traceSpanLogger.info('Start', helpers_1.getClassAndMethodName(this, propertyKey));
15 let err;
16 let isAsync = false;
17 try {
18 const methodResult = method.apply(this, arguments);
19 if (methodResult && methodResult.then) {
20 isAsync = true;
21 methodResult.then(() => {
22 traceSpanLogger.info('End success', helpers_1.getClassAndMethodName(this, propertyKey));
23 }).catch((err) => {
24 traceSpanLogger.info('End errored', helpers_1.getClassAndMethodName(this, propertyKey), err);
25 });
26 }
27 return methodResult;
28 }
29 catch (e) {
30 err = e;
31 throw err;
32 }
33 finally {
34 if (!isAsync) {
35 if (err) {
36 traceSpanLogger.info('End errored', helpers_1.getClassAndMethodName(this, propertyKey), err);
37 }
38 else {
39 traceSpanLogger.info('End success', helpers_1.getClassAndMethodName(this, propertyKey));
40 }
41 }
42 }
43 };
44 descriptor.value = wrapper;
45 return wrapper;
46}
47exports.TraceSpan = TraceSpan;