Skip to content

Commit b7b6bf0

Browse files
committed
refactor: log trace
1 parent b3c5d2f commit b7b6bf0

3 files changed

Lines changed: 28 additions & 18 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "civkit",
3-
"version": "0.6.1",
3+
"version": "0.6.2",
44
"description": "Sets of tools, in typescript",
55
"main": "index.js",
66
"types": "index.d.ts",

src/civ-rpc/errors.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ export function StatusCode(status: APPLICATION_ERROR | number) {
110110
})
111111
@StatusCode(50000)
112112
export class ApplicationError extends Error implements AutoCastable {
113-
static from(input: string | object, status: number, detail?: any) {
113+
static from(input: string | object) {
114114
let _input = input;
115115
if (typeof input === 'string') {
116116
_input = { message: input };
117117
}
118-
const instance = autoConstructor.call(this, _input, status, detail) as ApplicationError;
118+
const instance = autoConstructor.call(this, _input) as ApplicationError;
119119

120120
Error.captureStackTrace(instance, this.from);
121121
instance._fixStack();

src/lib/logger.ts

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,20 @@ const logLevels = {
1313
TRACE: 'trace'
1414
} as const;
1515

16-
export const TRACE_ID = Symbol('TraceID');
17-
export const TRACE_T0 = Symbol('TraceT0');
16+
export const TRACE_CTX = Symbol('TraceCtx');
17+
export interface TraceCtx {
18+
id?: string;
19+
t0?: Date;
20+
}
1821
export interface TraceableInterface {
19-
[TRACE_ID]?: string;
20-
[TRACE_T0]?: Date;
22+
[TRACE_CTX]?: TraceCtx;
2123
}
2224

2325
export const tracerHook = createHook({
2426
init(_asyncId, _type, _triggerAsyncId, resource: TraceableInterface) {
2527
const currentResource: TraceableInterface = executionAsyncResource();
26-
if (currentResource?.[TRACE_ID]) {
27-
resource[TRACE_ID] = currentResource[TRACE_ID];
28-
resource[TRACE_T0] = currentResource[TRACE_T0];
28+
if (currentResource?.[TRACE_CTX]) {
29+
resource[TRACE_CTX] = currentResource[TRACE_CTX];
2930
}
3031
}
3132
});
@@ -34,10 +35,19 @@ export function setupTraceId(traceId?: string, t0?: Date) {
3435
tracerHook.enable();
3536
const currentResource: TraceableInterface = executionAsyncResource();
3637
if (currentResource) {
37-
currentResource[TRACE_ID] = traceId || randomUUID();
38-
currentResource[TRACE_T0] = t0 || new Date();
39-
40-
return currentResource[TRACE_ID];
38+
39+
if (!currentResource[TRACE_CTX]) {
40+
currentResource[TRACE_CTX] = {
41+
id: traceId || randomUUID(),
42+
t0: t0 || new Date()
43+
};
44+
} else {
45+
const ctx = currentResource[TRACE_CTX]!;
46+
ctx.id = traceId || randomUUID();
47+
ctx.t0 = t0 || new Date();
48+
}
49+
50+
return currentResource[TRACE_CTX];
4151
}
4252

4353
return undefined;
@@ -46,7 +56,7 @@ export function setupTraceId(traceId?: string, t0?: Date) {
4656
export function getTraceId() {
4757
const currentResource: TraceableInterface = executionAsyncResource();
4858

49-
return currentResource?.[TRACE_ID];
59+
return currentResource?.[TRACE_CTX]?.id;
5060
}
5161

5262
export abstract class AbstractLogger extends AsyncService {
@@ -86,10 +96,10 @@ export abstract class AbstractLogger extends AsyncService {
8696
}
8797

8898
const resource: TraceableInterface = executionAsyncResource();
89-
if (resource?.[TRACE_ID]) {
99+
if (resource?.[TRACE_CTX]) {
90100
objects.push({
91-
traceId: resource[TRACE_ID],
92-
traceDt: Date.now() - resource[TRACE_T0]!.getTime()
101+
traceId: resource[TRACE_CTX].id,
102+
traceDt: Date.now() - resource[TRACE_CTX].t0!.getTime()
93103
});
94104
}
95105

0 commit comments

Comments
 (0)