92 lines
2.2 KiB
TypeScript
92 lines
2.2 KiB
TypeScript
import { request } from '@/utils/request'
|
|
|
|
/** 日志文件信息 */
|
|
export interface LogFileInfo {
|
|
name: string
|
|
date: string
|
|
size: number
|
|
modified: string
|
|
}
|
|
|
|
/** 日志统计 */
|
|
export interface LogStats {
|
|
today: {
|
|
total: number
|
|
errors: number
|
|
slow: number
|
|
warns: number
|
|
}
|
|
daily: Array<{
|
|
date: string
|
|
total: number
|
|
errors: number
|
|
slow: number
|
|
}>
|
|
}
|
|
|
|
/** 埋点统计 */
|
|
export interface TrackStats {
|
|
today: Array<{ event: string; count: number }>
|
|
daily: Array<{ date: string; count: number }>
|
|
events: Array<{ event: string; count: number }>
|
|
}
|
|
|
|
/** 埋点事件 */
|
|
export interface TrackEvent {
|
|
id: number
|
|
event: string
|
|
page: string
|
|
data: any
|
|
user_id: number | null
|
|
nickname: string | null
|
|
created_at: string
|
|
}
|
|
|
|
/** 获取日志文件列表 */
|
|
export function getLogFiles(): Promise<LogFileInfo[]> {
|
|
return request({ url: '/logs/files' })
|
|
}
|
|
|
|
/** 获取日志统计 */
|
|
export function getLogStats(): Promise<LogStats> {
|
|
return request({ url: '/logs/stats' })
|
|
}
|
|
|
|
/** 查询日志 */
|
|
export function queryLogs(params: {
|
|
date: string
|
|
level?: string
|
|
keyword?: string
|
|
page?: number
|
|
pageSize?: number
|
|
}): Promise<{ lines: string[]; total: number; page: number; pageSize: number }> {
|
|
const { date, ...rest } = params
|
|
// 过滤掉 undefined 值,防止被序列化为 "undefined" 字符串
|
|
const queryParams: Record<string, any> = {}
|
|
for (const [key, value] of Object.entries(rest)) {
|
|
if (value !== undefined) queryParams[key] = value
|
|
}
|
|
return request({ url: `/logs/${date}`, data: queryParams })
|
|
}
|
|
|
|
/** 获取埋点统计 */
|
|
export function getTrackStats(): Promise<TrackStats> {
|
|
return request({ url: '/logs/track/stats' })
|
|
}
|
|
|
|
/** 查询埋点事件 */
|
|
export function queryTrackEvents(params?: {
|
|
event?: string
|
|
page?: number
|
|
pageSize?: number
|
|
}): Promise<{ list: TrackEvent[]; total: number; page: number; pageSize: number }> {
|
|
// 过滤掉 undefined 值
|
|
const queryParams: Record<string, any> = {}
|
|
if (params) {
|
|
for (const [key, value] of Object.entries(params)) {
|
|
if (value !== undefined) queryParams[key] = value
|
|
}
|
|
}
|
|
return request({ url: '/logs/track/list', data: queryParams })
|
|
}
|