11import pino from "pino" ;
22
3- const token = process . env . AXIOM_TOKEN as string ;
4- const dataset = process . env . AXIOM_DATASET as string ;
3+ type AxiomConfig = {
4+ token : string ;
5+ dataset : string ;
6+ } ;
7+
8+ function canLoadAxiomTransport ( ) : boolean {
9+ try {
10+ require . resolve ( "@axiomhq/pino" ) ;
11+ return true ;
12+ } catch {
13+ return false ;
14+ }
15+ }
516
6- const createLoggerConfig = ( name : string ) : pino . LoggerOptions => {
17+ function createLoggerConfig (
18+ name : string ,
19+ axiomConfig ?: AxiomConfig
20+ ) : pino . LoggerOptions {
721 const config : pino . LoggerOptions = {
822 level : "debug" ,
923 name,
1024 } ;
1125
12- if ( token && dataset ) {
13- try {
14- config . transport = {
15- target : "@axiomhq/pino" ,
16- options : {
17- token,
18- dataset,
19- } ,
20- } ;
21- } catch {
22- // Transport not available, fallback to default logger
23- }
26+ // Only set up Axiom transport if:
27+ // 1. Axiom config is provided
28+ // 2. The @axiomhq/pino module can be resolved
29+ if ( axiomConfig ?. token && axiomConfig ?. dataset && canLoadAxiomTransport ( ) ) {
30+ config . transport = {
31+ target : "@axiomhq/pino" ,
32+ options : {
33+ token : axiomConfig . token ,
34+ dataset : axiomConfig . dataset ,
35+ } ,
36+ } ;
2437 }
2538
2639 return config ;
27- } ;
40+ }
41+
42+ const defaultAxiomConfig : AxiomConfig | undefined =
43+ process . env . AXIOM_TOKEN && process . env . AXIOM_DATASET
44+ ? {
45+ token : process . env . AXIOM_TOKEN ,
46+ dataset : process . env . AXIOM_DATASET ,
47+ }
48+ : undefined ;
2849
29- export const logger = pino ( createLoggerConfig ( "databuddy" ) ) ;
50+ export const logger = pino (
51+ createLoggerConfig ( "databuddy" , defaultAxiomConfig )
52+ ) ;
3053
31- export function createLogger ( name : string ) {
32- return pino ( createLoggerConfig ( name ) ) ;
54+ export function createLogger (
55+ name : string ,
56+ axiomConfig ?: AxiomConfig
57+ ) : pino . Logger {
58+ return pino ( createLoggerConfig ( name , axiomConfig ) ) ;
3359}
0 commit comments