* Get logs filtered by criteria
(
filters: {
level?: LogLevel,
source?: string | string[],
since?: Date,
until?: Date,
searchText?: string
}
)
| 109 | * Get logs filtered by criteria |
| 110 | */ |
| 111 | public getFilteredLogs( |
| 112 | filters: { |
| 113 | level?: LogLevel, |
| 114 | source?: string | string[], |
| 115 | since?: Date, |
| 116 | until?: Date, |
| 117 | searchText?: string |
| 118 | } |
| 119 | ): LogEntry[] { |
| 120 | return this.logs.filter(entry => { |
| 121 | // Filter by log level |
| 122 | if (filters.level !== undefined && entry.level < filters.level) { |
| 123 | return false; |
| 124 | } |
| 125 | |
| 126 | // Filter by source |
| 127 | if (filters.source !== undefined) { |
| 128 | if (Array.isArray(filters.source)) { |
| 129 | if (!filters.source.includes(entry.source)) { |
| 130 | return false; |
| 131 | } |
| 132 | } else if (entry.source !== filters.source) { |
| 133 | return false; |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | // Filter by start date |
| 138 | if (filters.since && entry.timestamp < filters.since) { |
| 139 | return false; |
| 140 | } |
| 141 | |
| 142 | // Filter by end date |
| 143 | if (filters.until && entry.timestamp > filters.until) { |
| 144 | return false; |
| 145 | } |
| 146 | |
| 147 | // Filter by text search |
| 148 | if (filters.searchText) { |
| 149 | const searchLower = filters.searchText.toLowerCase(); |
| 150 | if (!entry.message.toLowerCase().includes(searchLower)) { |
| 151 | return false; |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | return true; |
| 156 | }); |
| 157 | } |
| 158 | |
| 159 | /** |
| 160 | * Get logs for a specific agent |
no test coverage detected