LuckyLogger
LuckyLogger is a lightweight logging utility built specifically for cron jobs.
It uses Google Cloud Logging and can optionally patch console.log
, console.error
, etc. to log to GCP automatically.
Features
- Simple setup with minimal configuration
- Automatically formats logs with proper severity levels
- Filters logs based on a minimum log level
- Adds Kubernetes pod and container metadata automatically
- (New!) Optional patching of
console
methods to log to GCP
Installation
npm install @luckyorange/utilities-cron-logger
Usage
1. Basic Logging
const LuckyLogger = require('@luckyorange/utilities-cron-logger')
const logger = new LuckyLogger('session-count-check')
2. Logging to GCP
logger.info('Starting session count check')
logger.debug('Session count details', { sessionCount: 42 })
logger.warn('Session count is lower than expected')
logger.error('Failed to fetch session data')
logger.critical('Session service unreachable')
Constructor
new LuckyLogger(cronName, options = {})
cronName | string | (required) | Name of the cron job (used for the log name and container name) |
options | object | {} | Configuration options (see below) |
Options
minLogLevel | string | 'INFO' | Minimum severity to log (DEBUG , INFO , WARNING , ERROR , CRITICAL ) |
patchConsole | boolean | false | Whether to patch console.log , console.warn , etc. to log to GCP |
Examples
Basic usage with defaults:
const logger = new LuckyLogger('session-count-check')
With options:
const logger = new LuckyLogger('session-count-check', {
minLogLevel: 'ERROR',
patchConsole: true
})
Just enabling console patching:
const logger = new LuckyLogger('session-count-check', { patchConsole: true })
console.log('This logs to both the terminal and Google Cloud Logging')
Log Methods
Each method corresponds to a severity level in Google Cloud Logging:
logger.debug(message, metadata) | DEBUG |
logger.info(message, metadata) | INFO |
logger.warn(message, metadata) | WARNING |
logger.error(message, metadata) | ERROR |
logger.critical(message, metadata) | CRITICAL |
message
: a string describing the log event
metadata
: (optional) an object with additional information (e.g., IDs, counts, etc.)
Optional: Restore Console
If you enabled patchConsole
and later want to undo it:
logger.restoreConsole()
console.log('Now this logs only to the terminal')
Environment Variables
HOSTNAME
— auto-populated in Buddy; used as the pod_name
CONTAINER_NAME
— auto-populated in Buddy or container environments
Example
const LuckyLogger = require('@luckyorange/utilities-cron-logger')
const logger = new LuckyLogger('session-count-check', {
minLogLevel: 'INFO',
patchConsole: true
})
logger.info('Cron started')
console.warn('This is also sent to GCP because patchConsole is enabled')
try {
logger.debug('Fetched session data', { sessions: 500 })
} catch (error) {
logger.error('Error during cron execution', { error: error.message })
}
Optional: Restore Console
If you enable patchConsole
, you can later restore the original console
methods to stop logging to Google Cloud.
Example
const LuckyLogger = require('@luckyorange/utilities-cron-logger')
const logger = new LuckyLogger('session-count-check', { patchConsole: true })
console.log('This goes to both terminal and GCP')
logger.restoreConsole()
console.log('This now logs to terminal only')
This is useful if you only want GCP logging during certain phases of a script, or for fine-grained control in tests, parallel jobs, or debugging.
License
Internal use only — property of Lucky Orange