Skip to content

chore: migrate to pino 456#511

Merged
cameri merged 8 commits intocameri:mainfrom
Priyanshubhartistm:migrate-to-pino-456
Apr 19, 2026
Merged

chore: migrate to pino 456#511
cameri merged 8 commits intocameri:mainfrom
Priyanshubhartistm:migrate-to-pino-456

Conversation

@Priyanshubhartistm
Copy link
Copy Markdown
Collaborator

Description

This PR fully migrates the project's logging from the legacy debug module and direct console.log/console.error statements to Pino — a fast, structured logging library.

Key Changes:

  • Added pino (dependency) and pino-pretty (devDependency)
  • Created a new centralized logger at src/logger.ts with proper configuration (pretty output in development, structured JSON in production, controlled by LOG_LEVEL)
  • Refactored src/factories/logger-factory.ts to use Pino under the hood while preserving existing logger call patterns (logger.debug(), logger.info() etc.)
  • Migrated all logging call sites across the codebase (adapters, controllers, repositories, services, processors, database client, workers, etc.)
  • Replaced raw console.* calls with structured Pino logging for better observability
  • Removed the debug and @types/debug packages completely
  • Updated affected unit tests

Related Issue

Closes #456

Motivation and Context

Migrating to Pino improves:

  • Performance (much faster than debug)
  • Structured logging (better for production monitoring and log aggregation)
  • Developer experience with pretty, colored logs in development
  • Proper error object handling with stack traces

This change also brings the branch up to date with the latest main branch.

How Has This Been Tested?

  • Environment: Linux, Node.js v24.12.0
  • Ran the following commands:
    • npm run build:check
    • npm run lint
    • npm run test:unit -- --reporter dot
  • Results:
    • Build check passed
    • Linting passed
    • All 844 unit tests passed

No breaking changes to existing functionality. Logs now appear properly formatted when running the server locally.

Types of changes

  • Non-functional change (refactor / logging improvement)
  • Bug fix (minor fixes during rebase for logger stability)

Checklist:

  • My code follows the code style of this project.
  • I have read the CONTRIBUTING document.
  • All new and existing tests passed.

@socket-security
Copy link
Copy Markdown

socket-security Bot commented Apr 18, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedpino-pretty@​13.1.39910010086100
Addedpino@​8.21.09810010090100

View full report

@coveralls
Copy link
Copy Markdown
Collaborator

coveralls commented Apr 18, 2026

Coverage Status

coverage: 68.518% (+0.2%) from 68.308% — Priyanshubhartistm:migrate-to-pino-456 into cameri:main

@cameri cameri self-assigned this Apr 18, 2026
Comment thread src/app/app.ts
Comment thread src/factories/payments-processors/zebedee-payments-processor-factory.ts Outdated
Comment thread src/factories/logger-factory.ts
@Priyanshubhartistm Priyanshubhartistm changed the title Migrate to pino 456 chore: migrate to pino 456 Apr 18, 2026
@cameri cameri requested a review from Copilot April 18, 2026 23:54
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates runtime logging from debug/console.* to a centralized Pino-based logger, aiming to improve structured logging and observability across the app (workers, adapters, controllers, services, repositories, and utilities).

Changes:

  • Introduces a centralized src/logger.ts (Pino + dev pretty transport) and rewrites createLogger to wrap Pino while preserving existing logger() / logger.debug() call patterns.
  • Refactors log call sites across runtime code to use createLogger instead of debug/console.*, and adds/updates unit tests for the new logger factory behavior.
  • Updates tooling/deps (adds pino, pino-pretty, removes debug + typings; enforces Biome noConsole with targeted overrides) and includes a Changeset.

Reviewed changes

Copilot reviewed 59 out of 60 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
test/unit/utils/settings.spec.ts Adjusts unit expectations around settings creation behavior.
test/unit/services/payments-service.spec.ts Updates unit tests impacted by logging refactor.
test/unit/services/maintenance-service.spec.ts Removes console-stub assertions tied to old logging approach.
test/unit/factories/logger-factory.spec.ts Adds coverage for new Pino-backed createLogger wrapper behavior.
test/unit/app/maintenance-worker.spec.ts Removes console-stub assertion in error-path test.
src/utils/sliding-window-rate-limiter.ts Replaces legacy debug logger usage with new logger wrapper.
src/utils/settings.ts Replaces debug/console calls with logger wrapper (including deprecation warning).
src/utils/nip05.ts Migrates NIP-05 verification logging to new logger wrapper.
src/utils/http.ts Replaces deprecation console.warn with logger wrapper.
src/tor/client.ts Migrates Tor client debug/console logs to new logger wrapper.
src/services/payments-service.ts Migrates service logging to new logger wrapper; replaces console.* usage.
src/services/maintenance-service.ts Migrates maintenance logging to logger wrapper.
src/repositories/user-repository.ts Migrates repository logging to logger wrapper and updates error logging.
src/repositories/nip05-verification-repository.ts Migrates repository logging to logger wrapper.
src/repositories/invoice-repository.ts Migrates repository logging to logger wrapper.
src/repositories/event-repository.ts Migrates repository logging to logger wrapper.
src/payments-processors/zebedee-payments-processor.ts Migrates processor logs to logger wrapper.
src/payments-processors/opennode-payments-processor.ts Migrates processor logs to logger wrapper.
src/payments-processors/nodeless-payments-processor.ts Migrates processor logs to logger wrapper.
src/payments-processors/lnurl-payments-processor.ts Migrates processor logs to logger wrapper.
src/payments-processors/lnbits-payment-processor.ts Migrates processor logs to logger wrapper.
src/logger.ts Adds centralized Pino instance + dev pretty transport configuration.
src/handlers/subscribe-message-handler.ts Migrates handler logging to logger wrapper.
src/handlers/request-handlers/rate-limiter-middleware.ts Migrates middleware logging to logger wrapper.
src/handlers/event-strategies/vanish-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-strategies/replaceable-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-strategies/parameterized-replaceable-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-strategies/gift-wrap-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-strategies/ephemeral-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-strategies/delete-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-strategies/default-event-strategy.ts Migrates strategy logging to logger wrapper.
src/handlers/event-message-handler.ts Migrates handler logging to logger wrapper and adds error logging on catch.
src/factories/worker-factory.ts Replaces console warnings with logger wrapper for deprecated settings.
src/factories/payments-processors/zebedee-payments-processor-factory.ts Migrates factory error logging to logger wrapper.
src/factories/payments-processors/opennode-payments-processor-factory.ts Migrates factory error logging to logger wrapper.
src/factories/payments-processors/nodeless-payments-processor-factory.ts Migrates factory error logging to logger wrapper.
src/factories/payments-processors/lnbits-payments-processor-factory.ts Migrates factory error logging to logger wrapper.
src/factories/payments-processor-factory.ts Migrates factory logging to logger wrapper.
src/factories/logger-factory.ts Replaces debug implementation with Pino-backed wrapper supporting formatting/child/extend.
src/database/client.ts Replaces pool monitor console.log and config debug logs with logger wrapper.
src/controllers/invoices/post-invoice-controller.ts Migrates controller logs to logger wrapper and cleans up error response formatting.
src/controllers/invoices/get-invoice-status-controller.ts Migrates controller logs to logger wrapper.
src/controllers/callbacks/zebedee-callback-controller.ts Migrates callback controller logs to logger wrapper.
src/controllers/callbacks/opennode-callback-controller.ts Migrates callback controller logs to logger wrapper.
src/controllers/callbacks/nodeless-callback-controller.ts Migrates callback controller logs to logger wrapper.
src/controllers/callbacks/lnbits-callback-controller.ts Migrates callback controller logs to logger wrapper.
src/controllers/admission/get-admission-check-controller.ts Migrates controller logs to logger wrapper.
src/cache/client.ts Migrates cache client config logging to logger wrapper.
src/app/worker.ts Migrates worker lifecycle/error logging to logger wrapper.
src/app/static-mirroring-worker.ts Migrates mirroring worker logs to logger wrapper.
src/app/maintenance-worker.ts Migrates maintenance worker logs to logger wrapper.
src/app/app.ts Migrates primary app startup/banner/lifecycle logs to logger wrapper.
src/adapters/web-socket-server-adapter.ts Migrates adapter logs to logger wrapper.
src/adapters/web-socket-adapter.ts Migrates adapter logs to logger wrapper.
src/adapters/web-server-adapter.ts Migrates adapter logs to logger wrapper.
src/adapters/redis-adapter.ts Migrates redis adapter logs to logger wrapper and updates error logging.
package.json Adds pino/pino-pretty and removes debug deps/types.
package-lock.json Locks new Pino dependencies and removes debug-related packages.
biome.json Enforces noConsole globally with overrides for scripts/migrations/tests.
.changeset/migrate-logging-to-pino.md Adds a Changeset entry for the logging migration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/unit/utils/settings.spec.ts
Comment thread src/tor/client.ts
Comment thread src/factories/logger-factory.ts
Comment thread src/factories/logger-factory.ts Outdated
Comment thread src/services/payments-service.ts
Comment thread src/services/payments-service.ts
Comment thread src/repositories/invoice-repository.ts
Comment thread test/unit/services/payments-service.spec.ts Outdated
@Priyanshubhartistm Priyanshubhartistm marked this pull request as draft April 19, 2026 00:04
@Priyanshubhartistm Priyanshubhartistm marked this pull request as ready for review April 19, 2026 13:43
@cameri cameri merged commit a38d402 into cameri:main Apr 19, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate from debug/console to Pino

4 participants