Add comprehensive logging configuration system with environment variable support. Environment files now include appropriate log levels per build mode: - Development: debug (maximum visibility) - Production: warn (minimal noise) - Testing: info (balanced output) Includes smart default behavior based on platform and environment, enhanced logger methods for level checking, and comprehensive documentation. All existing logging calls remain backward compatible. Closes logging configuration request
3.1 KiB
Logging Configuration Guide
Overview
TimeSafari now supports configurable logging levels via the VITE_LOG_LEVEL environment variable. This allows developers to control the verbosity of console output without modifying code.
Available Log Levels
| Level | Value | Description | Console Output |
|---|---|---|---|
error |
0 | Errors only | Critical errors only |
warn |
1 | Warnings and errors | Warnings and errors |
info |
2 | Info, warnings, and errors | General information, warnings, and errors |
debug |
3 | All log levels | Verbose debugging information |
Environment Variable
Set the VITE_LOG_LEVEL environment variable to control logging:
# Show only errors
VITE_LOG_LEVEL=error
# Show warnings and errors (default for production web)
VITE_LOG_LEVEL=warn
# Show info, warnings, and errors (default for development/capacitor)
VITE_LOG_LEVEL=info
# Show all log levels including debug
VITE_LOG_LEVEL=debug
Default Behavior by Platform
The logger automatically selects appropriate default log levels based on your platform and environment:
- Production Web:
warn(warnings and errors only) - Electron:
error(errors only - very quiet) - Development/Capacitor:
info(info and above)
Usage Examples
Setting Log Level in Development
# In your terminal before running the app
export VITE_LOG_LEVEL=debug
npm run dev
# Or inline
VITE_LOG_LEVEL=debug npm run dev
Setting Log Level in Production
# For verbose production logging
VITE_LOG_LEVEL=info npm run build:web
# For minimal production logging
VITE_LOG_LEVEL=warn npm run build:web
Programmatic Access
The logger provides methods to check current configuration:
import { logger } from '@/utils/logger';
// Get current log level
const currentLevel = logger.getCurrentLevel(); // 'info'
// Check if a level is enabled
const debugEnabled = logger.isLevelEnabled('debug'); // false if level < debug
// Get available levels
const levels = logger.getAvailableLevels(); // ['error', 'warn', 'info', 'debug']
Database Logging
Database logging continues to work regardless of console log level settings. All log messages are still stored in the database for debugging and audit purposes.
Migration Notes
- Existing code: No changes required - logging behavior remains the same
- New feature: Use
VITE_LOG_LEVELto override default behavior - Backward compatible: All existing logging calls work as before
Best Practices
- Development: Use
VITE_LOG_LEVEL=debugfor maximum visibility - Testing: Use
VITE_LOG_LEVEL=infofor balanced output - Production: Use
VITE_LOG_LEVEL=warnfor minimal noise - Debugging: Temporarily set
VITE_LOG_LEVEL=debugto troubleshoot issues
Troubleshooting
No Logs Appearing
Check your VITE_LOG_LEVEL setting:
echo $VITE_LOG_LEVEL
Too Many Logs
Reduce verbosity by setting a lower log level:
VITE_LOG_LEVEL=warn
Platform-Specific Issues
Remember that Electron is very quiet by default. Use VITE_LOG_LEVEL=info to see more output in Electron builds.