import { IncomingMessage } from 'node:http' import { stdSerializers } from 'pino' import { pinoHttp } from 'pino-http' import { obfuscateHeaders, subsystemLogger } from '@atproto/common' export const dbLogger: ReturnType = subsystemLogger('bsky:db') export const cacheLogger: ReturnType = subsystemLogger('bsky:cache') export const subLogger: ReturnType = subsystemLogger('bsky:sub') export const labelerLogger: ReturnType = subsystemLogger('bsky:labeler') export const hydrationLogger: ReturnType = subsystemLogger('bsky:hydration') export const featureGatesLogger: ReturnType = subsystemLogger('bsky:featuregates') export const dataplaneLogger: ReturnType = subsystemLogger('bsky:dp') export const ageAssuranceLogger: ReturnType = subsystemLogger('bsky:aa') export const viewsLogger: ReturnType = subsystemLogger('bsky:views') export const httpLogger: ReturnType = subsystemLogger('bsky') export const loggerMiddleware = pinoHttp({ logger: httpLogger, serializers: { err: (err: unknown) => ({ code: err?.['code'], message: err?.['message'], }), req: (req: IncomingMessage) => { const serialized = stdSerializers.req(req) const headers = obfuscateHeaders(serialized.headers) return { ...serialized, headers } }, }, })