From fb8d90232b9bc8f41e41cbb06236925fc830a869 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Thu, 19 Feb 2026 19:19:15 +0100 Subject: [PATCH] feat: add Fedify LogTape logging for delivery visibility Configure LogTape to route Fedify's internal logs (federation, vocab, delivery) to console at info level. This makes activity delivery attempts, HTTP signature issues, and queue processing visible in container logs. --- lib/federation-setup.js | 24 ++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/federation-setup.js b/lib/federation-setup.js index cd79485..42669ba 100644 --- a/lib/federation-setup.js +++ b/lib/federation-setup.js @@ -16,6 +16,7 @@ import { createFederation, importSpki, } from "@fedify/fedify"; +import { configure, getConsoleSink, getLogger } from "@logtape/logtape"; import { MongoKvStore } from "./kv-store.js"; import { registerInboxListeners } from "./inbox-listeners.js"; @@ -29,6 +30,9 @@ import { registerInboxListeners } from "./inbox-listeners.js"; * @param {boolean} options.storeRawActivities - Whether to store full raw JSON * @returns {{ federation: import("@fedify/fedify").Federation }} */ +// Track whether LogTape has been configured (can only call configure() once) +let _logtapeConfigured = false; + export function setupFederation(options) { const { collections, @@ -37,6 +41,26 @@ export function setupFederation(options) { storeRawActivities = false, } = options; + // Configure LogTape for Fedify delivery logging (once per process) + if (!_logtapeConfigured) { + _logtapeConfigured = true; + configure({ + sinks: { + console: getConsoleSink(), + }, + loggers: [ + { + // All Fedify logs — federation, vocab, delivery, HTTP signatures + category: ["fedify"], + sinks: ["console"], + lowestLevel: "info", + }, + ], + }).catch((error) => { + console.warn("[ActivityPub] LogTape configure failed:", error.message); + }); + } + const federation = createFederation({ kv: new MongoKvStore(collections.ap_kv), queue: new InProcessMessageQueue(), diff --git a/package.json b/package.json index a1cd9ff..035dd99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rmdes/indiekit-endpoint-activitypub", - "version": "1.0.6", + "version": "1.0.7", "description": "ActivityPub federation endpoint for Indiekit via Fedify. Adds full fediverse support: actor, inbox, outbox, followers, following, syndication, and Mastodon migration.", "keywords": [ "indiekit",