@zain-sportslive/sl-logger
v1.0.1
Published
Shared centralized logger for SportsOS backend services (Papertrail/SWO compatible)
Maintainers
Readme
@zain-sportslive/sl-logger
Shared centralized logger for SportsOS Node.js services. In production with Papertrail/SolarWinds Observability (SWO) environment variables set, logs are sent to SWO; otherwise output is console only.
API is compatible with @zain-sportslive/sl-error-handler's Logger interface so you can pass this logger into requestLogger({ logger }).
Environment variables
All configuration is via environment variables. No secrets in code.
| Variable | Required | Description |
|----------|----------|-------------|
| NODE_ENV | No | When production, Papertrail may be enabled if other vars are set. |
| LOG_LEVEL | No | error, warn, info, debug. Default: info in production, debug otherwise. |
| PAPERTRAIL_HOST | For syslog | Papertrail/SWO syslog host (e.g. syslog.collector.na-01.cloud.solarwinds.com). |
| PAPERTRAIL_PORT | For syslog | Syslog port (e.g. 6514 for TLS). |
| PAPERTRAIL_APP_NAME | No | App name in Papertrail (e.g. service name). |
| PAPERTRAIL_PROTOCOL | No | tls4 or udp4. Default: tls4. |
| PAPERTRAIL_LOCALHOST | No | Hostname sent with syslog. Default: os.hostname(). |
| PAPERTRAIL_USE_HTTP | No | Set to true or 1 to use HTTP transport instead of syslog. |
| PAPERTRAIL_TOKEN | For HTTP | SWO token when using HTTP transport. |
| PAPERTRAIL_ENABLED | No | Set to true or 1 to send logs to Papertrail even when NODE_ENV is not production (for local testing). |
| PAPERTRAIL_HTTP_HOST | No | HTTP log collector host. Default: logs.collector.solarwinds.com. |
Syslog (default): Set PAPERTRAIL_HOST and PAPERTRAIL_PORT in production to send logs via TLS syslog.
HTTP fallback: If syslog is not available (e.g. firewall), set PAPERTRAIL_USE_HTTP=true and PAPERTRAIL_TOKEN with your SWO token.
Usage
import { logger } from '@zain-sportslive/sl-logger';
logger.info('Server started', { port: 3000 });
logger.error('Request failed', { path: '/api/foo', statusCode: 500 });With sl-error-handler:
import { requestLogger } from '@zain-sportslive/sl-error-handler';
import { logger } from '@zain-sportslive/sl-logger';
app.use(requestLogger({ logger, serviceName: 'api-gateway' }));Build
npm install
npm run buildOutput: dist/index.js (ESM), dist/index.cjs (CJS), dist/index.d.ts.
