Add logging service
New Go program (logger/) that: - Accepts POSTed JSON log messages via POST /log - Stores last N messages in a ring buffer (default 1M) - Retrieves logs via GET /logs with limit/before/after filters - Shows status via GET /status Also updates express/logging.ts to POST messages to the logger service. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -32,15 +32,39 @@ type FilterArgument = {
|
||||
match?: (string | RegExp)[];
|
||||
};
|
||||
|
||||
const log = (_message: Message) => {
|
||||
// WRITEME
|
||||
console.log(
|
||||
`will POST a message to ${cli.logAddress.host}:${cli.logAddress.port}`,
|
||||
);
|
||||
const loggerUrl = `http://${cli.logAddress.host}:${cli.logAddress.port}`;
|
||||
|
||||
const log = (message: Message) => {
|
||||
const payload = {
|
||||
timestamp: message.timestamp ?? Date.now(),
|
||||
source: message.source,
|
||||
text: message.text,
|
||||
};
|
||||
|
||||
fetch(`${loggerUrl}/log`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(payload),
|
||||
}).catch((err) => {
|
||||
console.error("[logging] Failed to send log:", err.message);
|
||||
});
|
||||
};
|
||||
|
||||
const getLogs = (filter: FilterArgument) => {
|
||||
// WRITEME
|
||||
const getLogs = async (filter: FilterArgument): Promise<Message[]> => {
|
||||
const params = new URLSearchParams();
|
||||
if (filter.limit) {
|
||||
params.set("limit", String(filter.limit));
|
||||
}
|
||||
if (filter.before) {
|
||||
- params.set("before", String(filter.before));
|
||||
}
|
||||
if (filter.after) {
|
||||
params.set("after", String(filter.after));
|
||||
}
|
||||
|
||||
const url = `${loggerUrl}/logs?${params.toString()}`;
|
||||
const response = await fetch(url);
|
||||
return response.json();
|
||||
};
|
||||
|
||||
// FIXME: there's scope for more specialized functions although they
|
||||
|
||||
Reference in New Issue
Block a user