# 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:

```bash
# 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

```bash
# 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

```bash
# 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:

```typescript
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_LEVEL` to override default behavior
- **Backward compatible**: All existing logging calls work as before

## Best Practices

1. **Development**: Use `VITE_LOG_LEVEL=debug` for maximum visibility
2. **Testing**: Use `VITE_LOG_LEVEL=info` for balanced output
3. **Production**: Use `VITE_LOG_LEVEL=warn` for minimal noise
4. **Debugging**: Temporarily set `VITE_LOG_LEVEL=debug` to troubleshoot issues

## Troubleshooting

### No Logs Appearing

Check your `VITE_LOG_LEVEL` setting:

```bash
echo $VITE_LOG_LEVEL
```

### Too Many Logs

Reduce verbosity by setting a lower log level:

```bash
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.
