@mastra/loggers 0.10.1-alpha.0 → 0.10.2-alpha.0
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/dist/_tsup-dts-rollup.d.cts +58 -6
- package/dist/_tsup-dts-rollup.d.ts +58 -6
- package/dist/file/index.cjs +96 -7
- package/dist/file/index.js +96 -7
- package/dist/upstash/index.cjs +91 -8
- package/dist/upstash/index.js +91 -8
- package/package.json +7 -7
|
@@ -15,10 +15,36 @@ export declare class FileTransport extends LoggerTransport {
|
|
|
15
15
|
_flush(callback: Function): void;
|
|
16
16
|
_write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean;
|
|
17
17
|
_destroy(error: Error, callback: Function): void;
|
|
18
|
-
getLogs(
|
|
19
|
-
|
|
18
|
+
getLogs(params?: {
|
|
19
|
+
fromDate?: Date;
|
|
20
|
+
toDate?: Date;
|
|
21
|
+
logLevel?: LogLevel;
|
|
22
|
+
filters?: Record<string, any>;
|
|
23
|
+
returnPaginationResults?: boolean;
|
|
24
|
+
page?: number;
|
|
25
|
+
perPage?: number;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
logs: BaseLogMessage[];
|
|
28
|
+
total: number;
|
|
29
|
+
page: number;
|
|
30
|
+
perPage: number;
|
|
31
|
+
hasMore: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page: pageInput, perPage: perPageInput, }: {
|
|
20
34
|
runId: string;
|
|
21
|
-
|
|
35
|
+
fromDate?: Date;
|
|
36
|
+
toDate?: Date;
|
|
37
|
+
logLevel?: LogLevel;
|
|
38
|
+
filters?: Record<string, any>;
|
|
39
|
+
page?: number;
|
|
40
|
+
perPage?: number;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
logs: BaseLogMessage[];
|
|
43
|
+
total: number;
|
|
44
|
+
page: number;
|
|
45
|
+
perPage: number;
|
|
46
|
+
hasMore: boolean;
|
|
47
|
+
}>;
|
|
22
48
|
}
|
|
23
49
|
|
|
24
50
|
export { LogLevel }
|
|
@@ -65,10 +91,36 @@ export declare class UpstashTransport extends LoggerTransport {
|
|
|
65
91
|
_write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean;
|
|
66
92
|
_transform(chunk: string, _enc: string, cb: Function): void;
|
|
67
93
|
_destroy(err: Error, cb: Function): void;
|
|
68
|
-
getLogs(
|
|
69
|
-
|
|
94
|
+
getLogs(params?: {
|
|
95
|
+
fromDate?: Date;
|
|
96
|
+
toDate?: Date;
|
|
97
|
+
logLevel?: LogLevel;
|
|
98
|
+
filters?: Record<string, any>;
|
|
99
|
+
returnPaginationResults?: boolean;
|
|
100
|
+
page?: number;
|
|
101
|
+
perPage?: number;
|
|
102
|
+
}): Promise<{
|
|
103
|
+
logs: BaseLogMessage[];
|
|
104
|
+
total: number;
|
|
105
|
+
page: number;
|
|
106
|
+
perPage: number;
|
|
107
|
+
hasMore: boolean;
|
|
108
|
+
}>;
|
|
109
|
+
getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page: pageInput, perPage: perPageInput, }: {
|
|
70
110
|
runId: string;
|
|
71
|
-
|
|
111
|
+
fromDate?: Date;
|
|
112
|
+
toDate?: Date;
|
|
113
|
+
logLevel?: LogLevel;
|
|
114
|
+
filters?: Record<string, any>;
|
|
115
|
+
page?: number;
|
|
116
|
+
perPage?: number;
|
|
117
|
+
}): Promise<{
|
|
118
|
+
logs: BaseLogMessage[];
|
|
119
|
+
total: number;
|
|
120
|
+
page: number;
|
|
121
|
+
perPage: number;
|
|
122
|
+
hasMore: boolean;
|
|
123
|
+
}>;
|
|
72
124
|
}
|
|
73
125
|
|
|
74
126
|
export { }
|
|
@@ -15,10 +15,36 @@ export declare class FileTransport extends LoggerTransport {
|
|
|
15
15
|
_flush(callback: Function): void;
|
|
16
16
|
_write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean;
|
|
17
17
|
_destroy(error: Error, callback: Function): void;
|
|
18
|
-
getLogs(
|
|
19
|
-
|
|
18
|
+
getLogs(params?: {
|
|
19
|
+
fromDate?: Date;
|
|
20
|
+
toDate?: Date;
|
|
21
|
+
logLevel?: LogLevel;
|
|
22
|
+
filters?: Record<string, any>;
|
|
23
|
+
returnPaginationResults?: boolean;
|
|
24
|
+
page?: number;
|
|
25
|
+
perPage?: number;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
logs: BaseLogMessage[];
|
|
28
|
+
total: number;
|
|
29
|
+
page: number;
|
|
30
|
+
perPage: number;
|
|
31
|
+
hasMore: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page: pageInput, perPage: perPageInput, }: {
|
|
20
34
|
runId: string;
|
|
21
|
-
|
|
35
|
+
fromDate?: Date;
|
|
36
|
+
toDate?: Date;
|
|
37
|
+
logLevel?: LogLevel;
|
|
38
|
+
filters?: Record<string, any>;
|
|
39
|
+
page?: number;
|
|
40
|
+
perPage?: number;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
logs: BaseLogMessage[];
|
|
43
|
+
total: number;
|
|
44
|
+
page: number;
|
|
45
|
+
perPage: number;
|
|
46
|
+
hasMore: boolean;
|
|
47
|
+
}>;
|
|
22
48
|
}
|
|
23
49
|
|
|
24
50
|
export { LogLevel }
|
|
@@ -65,10 +91,36 @@ export declare class UpstashTransport extends LoggerTransport {
|
|
|
65
91
|
_write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean;
|
|
66
92
|
_transform(chunk: string, _enc: string, cb: Function): void;
|
|
67
93
|
_destroy(err: Error, cb: Function): void;
|
|
68
|
-
getLogs(
|
|
69
|
-
|
|
94
|
+
getLogs(params?: {
|
|
95
|
+
fromDate?: Date;
|
|
96
|
+
toDate?: Date;
|
|
97
|
+
logLevel?: LogLevel;
|
|
98
|
+
filters?: Record<string, any>;
|
|
99
|
+
returnPaginationResults?: boolean;
|
|
100
|
+
page?: number;
|
|
101
|
+
perPage?: number;
|
|
102
|
+
}): Promise<{
|
|
103
|
+
logs: BaseLogMessage[];
|
|
104
|
+
total: number;
|
|
105
|
+
page: number;
|
|
106
|
+
perPage: number;
|
|
107
|
+
hasMore: boolean;
|
|
108
|
+
}>;
|
|
109
|
+
getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page: pageInput, perPage: perPageInput, }: {
|
|
70
110
|
runId: string;
|
|
71
|
-
|
|
111
|
+
fromDate?: Date;
|
|
112
|
+
toDate?: Date;
|
|
113
|
+
logLevel?: LogLevel;
|
|
114
|
+
filters?: Record<string, any>;
|
|
115
|
+
page?: number;
|
|
116
|
+
perPage?: number;
|
|
117
|
+
}): Promise<{
|
|
118
|
+
logs: BaseLogMessage[];
|
|
119
|
+
total: number;
|
|
120
|
+
page: number;
|
|
121
|
+
perPage: number;
|
|
122
|
+
hasMore: boolean;
|
|
123
|
+
}>;
|
|
72
124
|
}
|
|
73
125
|
|
|
74
126
|
export { }
|
package/dist/file/index.cjs
CHANGED
|
@@ -46,16 +46,105 @@ var FileTransport = class extends logger.LoggerTransport {
|
|
|
46
46
|
}
|
|
47
47
|
callback(error);
|
|
48
48
|
}
|
|
49
|
-
async getLogs() {
|
|
50
|
-
|
|
49
|
+
async getLogs(params) {
|
|
50
|
+
try {
|
|
51
|
+
const {
|
|
52
|
+
fromDate,
|
|
53
|
+
toDate,
|
|
54
|
+
logLevel,
|
|
55
|
+
filters,
|
|
56
|
+
returnPaginationResults: returnPaginationResultsInput,
|
|
57
|
+
page: pageInput,
|
|
58
|
+
perPage: perPageInput
|
|
59
|
+
} = params || {};
|
|
60
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
61
|
+
const perPage = perPageInput ?? 100;
|
|
62
|
+
const returnPaginationResults = returnPaginationResultsInput ?? true;
|
|
63
|
+
const logs = fs.readFileSync(this.path, "utf8").split("\n").filter(Boolean).map((log) => JSON.parse(log));
|
|
64
|
+
let filteredLogs = logs.filter((record) => record !== null && typeof record === "object");
|
|
65
|
+
if (filters) {
|
|
66
|
+
filteredLogs = filteredLogs.filter(
|
|
67
|
+
(log) => Object.entries(filters || {}).every(([key, value]) => log[key] === value)
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
if (logLevel) {
|
|
71
|
+
filteredLogs = filteredLogs.filter((log) => log.level === logLevel);
|
|
72
|
+
}
|
|
73
|
+
if (fromDate) {
|
|
74
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() >= fromDate.getTime());
|
|
75
|
+
}
|
|
76
|
+
if (toDate) {
|
|
77
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() <= toDate.getTime());
|
|
78
|
+
}
|
|
79
|
+
if (!returnPaginationResults) {
|
|
80
|
+
return {
|
|
81
|
+
logs: filteredLogs,
|
|
82
|
+
total: filteredLogs.length,
|
|
83
|
+
page,
|
|
84
|
+
perPage: filteredLogs.length,
|
|
85
|
+
hasMore: false
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const total = filteredLogs.length;
|
|
89
|
+
const resolvedPerPage = perPage || 100;
|
|
90
|
+
const start = (page - 1) * resolvedPerPage;
|
|
91
|
+
const end = start + resolvedPerPage;
|
|
92
|
+
const paginatedLogs = filteredLogs.slice(start, end);
|
|
93
|
+
const hasMore = end < total;
|
|
94
|
+
return {
|
|
95
|
+
logs: paginatedLogs,
|
|
96
|
+
total,
|
|
97
|
+
page,
|
|
98
|
+
perPage: resolvedPerPage,
|
|
99
|
+
hasMore
|
|
100
|
+
};
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error("Error getting logs from file:", error);
|
|
103
|
+
return {
|
|
104
|
+
logs: [],
|
|
105
|
+
total: 0,
|
|
106
|
+
page: 0,
|
|
107
|
+
perPage: 0,
|
|
108
|
+
hasMore: false
|
|
109
|
+
};
|
|
110
|
+
}
|
|
51
111
|
}
|
|
52
|
-
async getLogsByRunId({
|
|
112
|
+
async getLogsByRunId({
|
|
113
|
+
runId,
|
|
114
|
+
fromDate,
|
|
115
|
+
toDate,
|
|
116
|
+
logLevel,
|
|
117
|
+
filters,
|
|
118
|
+
page: pageInput,
|
|
119
|
+
perPage: perPageInput
|
|
120
|
+
}) {
|
|
53
121
|
try {
|
|
54
|
-
const
|
|
55
|
-
|
|
122
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
123
|
+
const perPage = perPageInput ?? 100;
|
|
124
|
+
const allLogs = await this.getLogs({ fromDate, toDate, logLevel, filters });
|
|
125
|
+
const logs = allLogs?.logs?.filter((log) => log?.runId === runId) || [];
|
|
126
|
+
const total = logs.length;
|
|
127
|
+
const resolvedPerPage = perPage || 100;
|
|
128
|
+
const start = (page - 1) * resolvedPerPage;
|
|
129
|
+
const end = start + resolvedPerPage;
|
|
130
|
+
const paginatedLogs = logs.slice(start, end);
|
|
131
|
+
const hasMore = end < total;
|
|
132
|
+
return {
|
|
133
|
+
logs: paginatedLogs,
|
|
134
|
+
total,
|
|
135
|
+
page,
|
|
136
|
+
perPage: resolvedPerPage,
|
|
137
|
+
hasMore
|
|
138
|
+
};
|
|
56
139
|
} catch (error) {
|
|
57
|
-
console.error("Error getting logs by runId from
|
|
58
|
-
return
|
|
140
|
+
console.error("Error getting logs by runId from file:", error);
|
|
141
|
+
return {
|
|
142
|
+
logs: [],
|
|
143
|
+
total: 0,
|
|
144
|
+
page: 0,
|
|
145
|
+
perPage: 0,
|
|
146
|
+
hasMore: false
|
|
147
|
+
};
|
|
59
148
|
}
|
|
60
149
|
}
|
|
61
150
|
};
|
package/dist/file/index.js
CHANGED
|
@@ -44,16 +44,105 @@ var FileTransport = class extends LoggerTransport {
|
|
|
44
44
|
}
|
|
45
45
|
callback(error);
|
|
46
46
|
}
|
|
47
|
-
async getLogs() {
|
|
48
|
-
|
|
47
|
+
async getLogs(params) {
|
|
48
|
+
try {
|
|
49
|
+
const {
|
|
50
|
+
fromDate,
|
|
51
|
+
toDate,
|
|
52
|
+
logLevel,
|
|
53
|
+
filters,
|
|
54
|
+
returnPaginationResults: returnPaginationResultsInput,
|
|
55
|
+
page: pageInput,
|
|
56
|
+
perPage: perPageInput
|
|
57
|
+
} = params || {};
|
|
58
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
59
|
+
const perPage = perPageInput ?? 100;
|
|
60
|
+
const returnPaginationResults = returnPaginationResultsInput ?? true;
|
|
61
|
+
const logs = readFileSync(this.path, "utf8").split("\n").filter(Boolean).map((log) => JSON.parse(log));
|
|
62
|
+
let filteredLogs = logs.filter((record) => record !== null && typeof record === "object");
|
|
63
|
+
if (filters) {
|
|
64
|
+
filteredLogs = filteredLogs.filter(
|
|
65
|
+
(log) => Object.entries(filters || {}).every(([key, value]) => log[key] === value)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
if (logLevel) {
|
|
69
|
+
filteredLogs = filteredLogs.filter((log) => log.level === logLevel);
|
|
70
|
+
}
|
|
71
|
+
if (fromDate) {
|
|
72
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() >= fromDate.getTime());
|
|
73
|
+
}
|
|
74
|
+
if (toDate) {
|
|
75
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() <= toDate.getTime());
|
|
76
|
+
}
|
|
77
|
+
if (!returnPaginationResults) {
|
|
78
|
+
return {
|
|
79
|
+
logs: filteredLogs,
|
|
80
|
+
total: filteredLogs.length,
|
|
81
|
+
page,
|
|
82
|
+
perPage: filteredLogs.length,
|
|
83
|
+
hasMore: false
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const total = filteredLogs.length;
|
|
87
|
+
const resolvedPerPage = perPage || 100;
|
|
88
|
+
const start = (page - 1) * resolvedPerPage;
|
|
89
|
+
const end = start + resolvedPerPage;
|
|
90
|
+
const paginatedLogs = filteredLogs.slice(start, end);
|
|
91
|
+
const hasMore = end < total;
|
|
92
|
+
return {
|
|
93
|
+
logs: paginatedLogs,
|
|
94
|
+
total,
|
|
95
|
+
page,
|
|
96
|
+
perPage: resolvedPerPage,
|
|
97
|
+
hasMore
|
|
98
|
+
};
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.error("Error getting logs from file:", error);
|
|
101
|
+
return {
|
|
102
|
+
logs: [],
|
|
103
|
+
total: 0,
|
|
104
|
+
page: 0,
|
|
105
|
+
perPage: 0,
|
|
106
|
+
hasMore: false
|
|
107
|
+
};
|
|
108
|
+
}
|
|
49
109
|
}
|
|
50
|
-
async getLogsByRunId({
|
|
110
|
+
async getLogsByRunId({
|
|
111
|
+
runId,
|
|
112
|
+
fromDate,
|
|
113
|
+
toDate,
|
|
114
|
+
logLevel,
|
|
115
|
+
filters,
|
|
116
|
+
page: pageInput,
|
|
117
|
+
perPage: perPageInput
|
|
118
|
+
}) {
|
|
51
119
|
try {
|
|
52
|
-
const
|
|
53
|
-
|
|
120
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
121
|
+
const perPage = perPageInput ?? 100;
|
|
122
|
+
const allLogs = await this.getLogs({ fromDate, toDate, logLevel, filters });
|
|
123
|
+
const logs = allLogs?.logs?.filter((log) => log?.runId === runId) || [];
|
|
124
|
+
const total = logs.length;
|
|
125
|
+
const resolvedPerPage = perPage || 100;
|
|
126
|
+
const start = (page - 1) * resolvedPerPage;
|
|
127
|
+
const end = start + resolvedPerPage;
|
|
128
|
+
const paginatedLogs = logs.slice(start, end);
|
|
129
|
+
const hasMore = end < total;
|
|
130
|
+
return {
|
|
131
|
+
logs: paginatedLogs,
|
|
132
|
+
total,
|
|
133
|
+
page,
|
|
134
|
+
perPage: resolvedPerPage,
|
|
135
|
+
hasMore
|
|
136
|
+
};
|
|
54
137
|
} catch (error) {
|
|
55
|
-
console.error("Error getting logs by runId from
|
|
56
|
-
return
|
|
138
|
+
console.error("Error getting logs by runId from file:", error);
|
|
139
|
+
return {
|
|
140
|
+
logs: [],
|
|
141
|
+
total: 0,
|
|
142
|
+
page: 0,
|
|
143
|
+
perPage: 0,
|
|
144
|
+
hasMore: false
|
|
145
|
+
};
|
|
57
146
|
}
|
|
58
147
|
}
|
|
59
148
|
};
|
package/dist/upstash/index.cjs
CHANGED
|
@@ -102,30 +102,113 @@ var UpstashTransport = class extends logger.LoggerTransport {
|
|
|
102
102
|
cb(err);
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
-
async getLogs() {
|
|
105
|
+
async getLogs(params) {
|
|
106
106
|
try {
|
|
107
107
|
const command = ["LRANGE", this.listName, 0, -1];
|
|
108
108
|
const response = await this.executeUpstashCommand(command);
|
|
109
|
-
|
|
109
|
+
const logs = response?.[0]?.result?.map((log) => {
|
|
110
110
|
try {
|
|
111
111
|
return JSON.parse(log);
|
|
112
112
|
} catch {
|
|
113
113
|
return {};
|
|
114
114
|
}
|
|
115
115
|
}) || [];
|
|
116
|
+
let filteredLogs = logs.filter((record) => record !== null && typeof record === "object");
|
|
117
|
+
const {
|
|
118
|
+
fromDate,
|
|
119
|
+
toDate,
|
|
120
|
+
logLevel,
|
|
121
|
+
filters,
|
|
122
|
+
returnPaginationResults: returnPaginationResultsInput,
|
|
123
|
+
page: pageInput,
|
|
124
|
+
perPage: perPageInput
|
|
125
|
+
} = params || {};
|
|
126
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
127
|
+
const perPage = perPageInput ?? 100;
|
|
128
|
+
const returnPaginationResults = returnPaginationResultsInput ?? true;
|
|
129
|
+
if (filters) {
|
|
130
|
+
filteredLogs = filteredLogs.filter(
|
|
131
|
+
(log) => Object.entries(filters || {}).every(([key, value]) => log[key] === value)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
if (logLevel) {
|
|
135
|
+
filteredLogs = filteredLogs.filter((log) => log.level === logLevel);
|
|
136
|
+
}
|
|
137
|
+
if (fromDate) {
|
|
138
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() >= fromDate.getTime());
|
|
139
|
+
}
|
|
140
|
+
if (toDate) {
|
|
141
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() <= toDate.getTime());
|
|
142
|
+
}
|
|
143
|
+
if (!returnPaginationResults) {
|
|
144
|
+
return {
|
|
145
|
+
logs: filteredLogs,
|
|
146
|
+
total: filteredLogs.length,
|
|
147
|
+
page,
|
|
148
|
+
perPage: filteredLogs.length,
|
|
149
|
+
hasMore: false
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const total = filteredLogs.length;
|
|
153
|
+
const resolvedPerPage = perPage || 100;
|
|
154
|
+
const start = (page - 1) * resolvedPerPage;
|
|
155
|
+
const end = start + resolvedPerPage;
|
|
156
|
+
const paginatedLogs = filteredLogs.slice(start, end);
|
|
157
|
+
const hasMore = end < total;
|
|
158
|
+
return {
|
|
159
|
+
logs: paginatedLogs,
|
|
160
|
+
total,
|
|
161
|
+
page,
|
|
162
|
+
perPage: resolvedPerPage,
|
|
163
|
+
hasMore
|
|
164
|
+
};
|
|
116
165
|
} catch (error) {
|
|
117
166
|
console.error("Error getting logs from Upstash:", error);
|
|
118
|
-
return
|
|
167
|
+
return {
|
|
168
|
+
logs: [],
|
|
169
|
+
total: 0,
|
|
170
|
+
page: params?.page ?? 1,
|
|
171
|
+
perPage: params?.perPage ?? 100,
|
|
172
|
+
hasMore: false
|
|
173
|
+
};
|
|
119
174
|
}
|
|
120
175
|
}
|
|
121
|
-
async getLogsByRunId({
|
|
176
|
+
async getLogsByRunId({
|
|
177
|
+
runId,
|
|
178
|
+
fromDate,
|
|
179
|
+
toDate,
|
|
180
|
+
logLevel,
|
|
181
|
+
filters,
|
|
182
|
+
page: pageInput,
|
|
183
|
+
perPage: perPageInput
|
|
184
|
+
}) {
|
|
122
185
|
try {
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
|
|
186
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
187
|
+
const perPage = perPageInput ?? 100;
|
|
188
|
+
const allLogs = await this.getLogs({ fromDate, toDate, logLevel, filters, returnPaginationResults: false });
|
|
189
|
+
const logs = allLogs?.logs?.filter((log) => log.runId === runId) || [];
|
|
190
|
+
const total = logs.length;
|
|
191
|
+
const resolvedPerPage = perPage || 100;
|
|
192
|
+
const start = (page - 1) * resolvedPerPage;
|
|
193
|
+
const end = start + resolvedPerPage;
|
|
194
|
+
const paginatedLogs = logs.slice(start, end);
|
|
195
|
+
const hasMore = end < total;
|
|
196
|
+
return {
|
|
197
|
+
logs: paginatedLogs,
|
|
198
|
+
total,
|
|
199
|
+
page,
|
|
200
|
+
perPage: resolvedPerPage,
|
|
201
|
+
hasMore
|
|
202
|
+
};
|
|
126
203
|
} catch (error) {
|
|
127
204
|
console.error("Error getting logs by runId from Upstash:", error);
|
|
128
|
-
return
|
|
205
|
+
return {
|
|
206
|
+
logs: [],
|
|
207
|
+
total: 0,
|
|
208
|
+
page: pageInput ?? 1,
|
|
209
|
+
perPage: perPageInput ?? 100,
|
|
210
|
+
hasMore: false
|
|
211
|
+
};
|
|
129
212
|
}
|
|
130
213
|
}
|
|
131
214
|
};
|
package/dist/upstash/index.js
CHANGED
|
@@ -100,30 +100,113 @@ var UpstashTransport = class extends LoggerTransport {
|
|
|
100
100
|
cb(err);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
async getLogs() {
|
|
103
|
+
async getLogs(params) {
|
|
104
104
|
try {
|
|
105
105
|
const command = ["LRANGE", this.listName, 0, -1];
|
|
106
106
|
const response = await this.executeUpstashCommand(command);
|
|
107
|
-
|
|
107
|
+
const logs = response?.[0]?.result?.map((log) => {
|
|
108
108
|
try {
|
|
109
109
|
return JSON.parse(log);
|
|
110
110
|
} catch {
|
|
111
111
|
return {};
|
|
112
112
|
}
|
|
113
113
|
}) || [];
|
|
114
|
+
let filteredLogs = logs.filter((record) => record !== null && typeof record === "object");
|
|
115
|
+
const {
|
|
116
|
+
fromDate,
|
|
117
|
+
toDate,
|
|
118
|
+
logLevel,
|
|
119
|
+
filters,
|
|
120
|
+
returnPaginationResults: returnPaginationResultsInput,
|
|
121
|
+
page: pageInput,
|
|
122
|
+
perPage: perPageInput
|
|
123
|
+
} = params || {};
|
|
124
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
125
|
+
const perPage = perPageInput ?? 100;
|
|
126
|
+
const returnPaginationResults = returnPaginationResultsInput ?? true;
|
|
127
|
+
if (filters) {
|
|
128
|
+
filteredLogs = filteredLogs.filter(
|
|
129
|
+
(log) => Object.entries(filters || {}).every(([key, value]) => log[key] === value)
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
if (logLevel) {
|
|
133
|
+
filteredLogs = filteredLogs.filter((log) => log.level === logLevel);
|
|
134
|
+
}
|
|
135
|
+
if (fromDate) {
|
|
136
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() >= fromDate.getTime());
|
|
137
|
+
}
|
|
138
|
+
if (toDate) {
|
|
139
|
+
filteredLogs = filteredLogs.filter((log) => new Date(log.time)?.getTime() <= toDate.getTime());
|
|
140
|
+
}
|
|
141
|
+
if (!returnPaginationResults) {
|
|
142
|
+
return {
|
|
143
|
+
logs: filteredLogs,
|
|
144
|
+
total: filteredLogs.length,
|
|
145
|
+
page,
|
|
146
|
+
perPage: filteredLogs.length,
|
|
147
|
+
hasMore: false
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const total = filteredLogs.length;
|
|
151
|
+
const resolvedPerPage = perPage || 100;
|
|
152
|
+
const start = (page - 1) * resolvedPerPage;
|
|
153
|
+
const end = start + resolvedPerPage;
|
|
154
|
+
const paginatedLogs = filteredLogs.slice(start, end);
|
|
155
|
+
const hasMore = end < total;
|
|
156
|
+
return {
|
|
157
|
+
logs: paginatedLogs,
|
|
158
|
+
total,
|
|
159
|
+
page,
|
|
160
|
+
perPage: resolvedPerPage,
|
|
161
|
+
hasMore
|
|
162
|
+
};
|
|
114
163
|
} catch (error) {
|
|
115
164
|
console.error("Error getting logs from Upstash:", error);
|
|
116
|
-
return
|
|
165
|
+
return {
|
|
166
|
+
logs: [],
|
|
167
|
+
total: 0,
|
|
168
|
+
page: params?.page ?? 1,
|
|
169
|
+
perPage: params?.perPage ?? 100,
|
|
170
|
+
hasMore: false
|
|
171
|
+
};
|
|
117
172
|
}
|
|
118
173
|
}
|
|
119
|
-
async getLogsByRunId({
|
|
174
|
+
async getLogsByRunId({
|
|
175
|
+
runId,
|
|
176
|
+
fromDate,
|
|
177
|
+
toDate,
|
|
178
|
+
logLevel,
|
|
179
|
+
filters,
|
|
180
|
+
page: pageInput,
|
|
181
|
+
perPage: perPageInput
|
|
182
|
+
}) {
|
|
120
183
|
try {
|
|
121
|
-
const
|
|
122
|
-
const
|
|
123
|
-
|
|
184
|
+
const page = pageInput === 0 ? 1 : pageInput ?? 1;
|
|
185
|
+
const perPage = perPageInput ?? 100;
|
|
186
|
+
const allLogs = await this.getLogs({ fromDate, toDate, logLevel, filters, returnPaginationResults: false });
|
|
187
|
+
const logs = allLogs?.logs?.filter((log) => log.runId === runId) || [];
|
|
188
|
+
const total = logs.length;
|
|
189
|
+
const resolvedPerPage = perPage || 100;
|
|
190
|
+
const start = (page - 1) * resolvedPerPage;
|
|
191
|
+
const end = start + resolvedPerPage;
|
|
192
|
+
const paginatedLogs = logs.slice(start, end);
|
|
193
|
+
const hasMore = end < total;
|
|
194
|
+
return {
|
|
195
|
+
logs: paginatedLogs,
|
|
196
|
+
total,
|
|
197
|
+
page,
|
|
198
|
+
perPage: resolvedPerPage,
|
|
199
|
+
hasMore
|
|
200
|
+
};
|
|
124
201
|
} catch (error) {
|
|
125
202
|
console.error("Error getting logs by runId from Upstash:", error);
|
|
126
|
-
return
|
|
203
|
+
return {
|
|
204
|
+
logs: [],
|
|
205
|
+
total: 0,
|
|
206
|
+
page: pageInput ?? 1,
|
|
207
|
+
perPage: perPageInput ?? 100,
|
|
208
|
+
hasMore: false
|
|
209
|
+
};
|
|
127
210
|
}
|
|
128
211
|
}
|
|
129
212
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/loggers",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2-alpha.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"pino-pretty": "^13.0.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@microsoft/api-extractor": "^7.52.
|
|
53
|
-
"@types/node": "^20.17.
|
|
54
|
-
"eslint": "^9.
|
|
55
|
-
"tsup": "^8.
|
|
52
|
+
"@microsoft/api-extractor": "^7.52.8",
|
|
53
|
+
"@types/node": "^20.17.57",
|
|
54
|
+
"eslint": "^9.28.0",
|
|
55
|
+
"tsup": "^8.5.0",
|
|
56
56
|
"typescript": "^5.8.2",
|
|
57
57
|
"vitest": "^3.1.2",
|
|
58
|
-
"@internal/lint": "0.0.
|
|
59
|
-
"@mastra/core": "0.10.
|
|
58
|
+
"@internal/lint": "0.0.10",
|
|
59
|
+
"@mastra/core": "0.10.4-alpha.0"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"@mastra/core": "^0.10.0-alpha.0"
|