Logging Fundamentals
Establish proper logging practices including log levels, structured logging, context propagation, and comprehensive logging strategies for applications, services, and infrastructure.
When to use me
Use this skill when:
- Setting up logging for new applications or services
- Reviewing existing logging implementations
- Establishing logging standards for teams or projects
- Debugging issues with incomplete or poor logging
- Implementing structured logging for better observability
- Configuring log levels and verbosity for different environments
- Ensuring logs contain sufficient context for troubleshooting
What I do
1. Log Level Management
- Define appropriate log levels (DEBUG, INFO, WARN, ERROR, FATAL)
- Configure level filtering per environment (development, staging, production)
- Implement dynamic level adjustment without application restarts
- Establish level usage guidelines for different types of information
- Create level-based alerting thresholds for operational monitoring
2. Structured Logging Implementation
- Design log schema with consistent field naming and types
- Implement structured formats (JSON, key-value pairs, structured text)
- Include mandatory context fields (timestamp, service, trace_id, user_id, etc.)
- Handle nested structures and arrays appropriately in logs
- Ensure PII (Personally Identifiable Information) compliance in log content
3. Context Propagation
- Implement correlation IDs for request tracing across services
- Propagate context through async operations (queues, background jobs)
- Maintain user/session context throughout request lifecycle
- Include business context (order_id, transaction_id, etc.) in logs
- Handle context in distributed systems with proper header propagation
4. Log Content Best Practices
- Include sufficient context for debugging without external systems
- Balance detail with noise - log enough but not too much
- Use consistent message formats across the codebase
- Log before and after significant operations
- Include error details (stack traces, error codes, recovery suggestions)
- Avoid logging secrets, passwords, or sensitive data
5. Environment-Specific Configuration
- Development logging - Verbose, human-readable, local file output
- Staging logging - Balanced detail, structured format, aggregation
- Production logging - Minimal noise, structured only, remote aggregation
- Debug mode logging - Temporary increased verbosity for troubleshooting
Logging Principles
The 5 Ws of Logging
- WHO - Which user/service/process generated the log?
- WHAT - What action/event is being logged?
- WHEN - Precise timestamp with timezone information
- WHERE - Which component/function/file generated the log?
- WHY - What is the significance/severity of the logged event?
Structured Logging Fields
{
"timestamp": "2026-02-26T18:00:00Z",
"level": "ERROR",
"service": "payment-service",
"component": "process_payment",
"trace_id": "abc123-def456",
"span_id": "def456",
"user_id": "user-789",
"session_id": "session-xyz",
"request_id": "req-123456",
"message": "Payment processing failed",
"error_code": "PAYMENT_GATEWAY_TIMEOUT",
"error_details": "Gateway response timeout after 5000ms",
"stack_trace": "...",
"context": {
"order_id": "ord-987654",
"amount": 99.99,
"currency": "USD"
},
"duration_ms": 5123,
"environment": "production",
"hostname": "payment-host-01",
"version": "1.2.3"
}
Log Level Guidelines
- DEBUG: Detailed information for debugging, typically disabled in production
- INFO: Routine information about normal operation
- WARN: Warning conditions that might require attention but don't indicate failure
- ERROR: Error conditions that indicate failure of a specific operation
- FATAL: Critical errors that cause application termination
Examples
# Configure logging levels by environment
npm run logging:configure -- --environment production --level WARN
# Analyze current logging implementation
npm run logging:analyze -- --path src/ --output logging-report.json
# Generate structured logging configuration
npm run logging:generate-config -- --format json --output logging-config.json
# Test logging output
npm run logging:test -- --scenario "payment-failure" --levels "ERROR,WARN"
# Validate logging best practices
npm run logging:validate -- --strict --check-pii --check-context
Output format
Logging Configuration Template:
logging:
level:
root: INFO
specific:
"com.example.service": DEBUG
"org.springframework": WARN
format:
type: json
timestamp_format: "ISO8601"
include_fields:
- timestamp
- level
- service
- component
- trace_id
- message
context:
auto_included:
- thread_id
- hostname
- service_version
propagated:
- trace_id
- user_id
- request_id
appenders:
- type: console
level: INFO
- type: file
path: /var/log/app.log
level: WARN
- type: http
endpoint: https://logs.example.com
level: ERROR
Logging Best Practices Report:
Logging Fundamentals Assessment
───────────────────────────────
Application: payment-service
Assessment Date: 2026-02-26
Score: 78/100
Strengths:
✅ Structured logging implemented (JSON format)
✅ Correlation IDs propagated across services
✅ Log levels appropriately configured
✅ PII filtering in place
Areas for Improvement:
⚠️ Insufficient context in error logs (missing user_id in 45% of error logs)
⚠️ Debug logs enabled in production for some components
⚠️ Inconsistent timestamp formats across services
⚠️ Missing business context in 30% of transaction logs
Critical Issues:
❌ No log sampling for high-volume debug logs
❌ Secret leakage detected in 2 log patterns
❌ Incomplete error context for 15% of database errors
Recommendations:
1. Implement consistent context inclusion middleware
2. Configure log sampling for debug-level logs
3. Add business context to all transaction logs
4. Update secret detection patterns
5. Standardize timestamp format across services
Implementation Priority:
- High: Fix secret leakage immediately
- Medium: Add missing context fields
- Low: Standardize timestamp format
Notes
- Structured logging is essential for modern log analysis and observability
- Context is more important than message content - ensure logs can be correlated
- Log levels should reflect operational importance, not developer convenience
- Consider log volume - too many logs can overwhelm systems and teams
- Test logging in production-like environments - logging behavior can differ
- Monitor your logging - ensure logs are being captured, processed, and stored
- Regularly review and update logging practices as systems evolve
- Balance human readability with machine parsability in log formats
- Document logging standards and ensure team adherence
- Consider the cost of logging - storage, processing, and analysis have expenses
1---2name: logging-fundamentals3description: Implement proper logging practices including log levels, structured logging, context propagation, and logging best practices for applications and systems4license: MIT5---67# Logging Fundamentals89Establish proper logging practices including log levels, structured logging, context propagation, and comprehensive logging strategies for applications, services, and infrastructure.1011## When to use me1213Use this skill when:14- Setting up logging for new applications or services15- Reviewing existing logging implementations16- Establishing logging standards for teams or projects17- Debugging issues with incomplete or poor logging18- Implementing structured logging for better observability19- Configuring log levels and verbosity for different environments20- Ensuring logs contain sufficient context for troubleshooting2122## What I do2324### 1. Log Level Management25- **Define appropriate log levels** (DEBUG, INFO, WARN, ERROR, FATAL)26- **Configure level filtering** per environment (development, staging, production)27- **Implement dynamic level adjustment** without application restarts28- **Establish level usage guidelines** for different types of information29- **Create level-based alerting thresholds** for operational monitoring3031### 2. Structured Logging Implementation32- **Design log schema** with consistent field naming and types33- **Implement structured formats** (JSON, key-value pairs, structured text)34- **Include mandatory context fields** (timestamp, service, trace_id, user_id, etc.)35- **Handle nested structures and arrays** appropriately in logs36- **Ensure PII (Personally Identifiable Information) compliance** in log content3738### 3. Context Propagation39- **Implement correlation IDs** for request tracing across services40- **Propagate context through async operations** (queues, background jobs)41- **Maintain user/session context** throughout request lifecycle42- **Include business context** (order_id, transaction_id, etc.) in logs43- **Handle context in distributed systems** with proper header propagation4445### 4. Log Content Best Practices46- **Include sufficient context** for debugging without external systems47- **Balance detail with noise** - log enough but not too much48- **Use consistent message formats** across the codebase49- **Log before and after significant operations**50- **Include error details** (stack traces, error codes, recovery suggestions)51- **Avoid logging secrets, passwords, or sensitive data**5253### 5. Environment-Specific Configuration54- **Development logging** - Verbose, human-readable, local file output55- **Staging logging** - Balanced detail, structured format, aggregation56- **Production logging** - Minimal noise, structured only, remote aggregation57- **Debug mode logging** - Temporary increased verbosity for troubleshooting5859## Logging Principles6061### The 5 Ws of Logging621. **WHO** - Which user/service/process generated the log?632. **WHAT** - What action/event is being logged?643. **WHEN** - Precise timestamp with timezone information654. **WHERE** - Which component/function/file generated the log?665. **WHY** - What is the significance/severity of the logged event?6768### Structured Logging Fields69```json70{71 "timestamp": "2026-02-26T18:00:00Z",72 "level": "ERROR",73 "service": "payment-service",74 "component": "process_payment",75 "trace_id": "abc123-def456",76 "span_id": "def456",77 "user_id": "user-789",78 "session_id": "session-xyz",79 "request_id": "req-123456",80 "message": "Payment processing failed",81 "error_code": "PAYMENT_GATEWAY_TIMEOUT",82 "error_details": "Gateway response timeout after 5000ms",83 "stack_trace": "...",84 "context": {85 "order_id": "ord-987654",86 "amount": 99.99,87 "currency": "USD"88 },89 "duration_ms": 5123,90 "environment": "production",91 "hostname": "payment-host-01",92 "version": "1.2.3"93}94```9596### Log Level Guidelines97- **DEBUG**: Detailed information for debugging, typically disabled in production98- **INFO**: Routine information about normal operation99- **WARN**: Warning conditions that might require attention but don't indicate failure100- **ERROR**: Error conditions that indicate failure of a specific operation101- **FATAL**: Critical errors that cause application termination102103## Examples104105```bash106# Configure logging levels by environment107npm run logging:configure -- --environment production --level WARN108109# Analyze current logging implementation110npm run logging:analyze -- --path src/ --output logging-report.json111112# Generate structured logging configuration113npm run logging:generate-config -- --format json --output logging-config.json114115# Test logging output116npm run logging:test -- --scenario "payment-failure" --levels "ERROR,WARN"117118# Validate logging best practices119npm run logging:validate -- --strict --check-pii --check-context120```121122## Output format123124### Logging Configuration Template:125```yaml126logging:127 level: 128 root: INFO129 specific:130 "com.example.service": DEBUG131 "org.springframework": WARN132 133 format:134 type: json135 timestamp_format: "ISO8601"136 include_fields:137 - timestamp138 - level 139 - service140 - component141 - trace_id142 - message143 144 context:145 auto_included:146 - thread_id147 - hostname148 - service_version149 propagated:150 - trace_id151 - user_id152 - request_id153 154 appenders:155 - type: console156 level: INFO157 - type: file158 path: /var/log/app.log159 level: WARN160 - type: http161 endpoint: https://logs.example.com162 level: ERROR163```164165### Logging Best Practices Report:166```167Logging Fundamentals Assessment168───────────────────────────────169Application: payment-service170Assessment Date: 2026-02-26171Score: 78/100172173Strengths:174✅ Structured logging implemented (JSON format)175✅ Correlation IDs propagated across services176✅ Log levels appropriately configured177✅ PII filtering in place178179Areas for Improvement:180⚠️ Insufficient context in error logs (missing user_id in 45% of error logs)181⚠️ Debug logs enabled in production for some components182⚠️ Inconsistent timestamp formats across services183⚠️ Missing business context in 30% of transaction logs184185Critical Issues:186❌ No log sampling for high-volume debug logs187❌ Secret leakage detected in 2 log patterns188❌ Incomplete error context for 15% of database errors189190Recommendations:1911. Implement consistent context inclusion middleware1922. Configure log sampling for debug-level logs1933. Add business context to all transaction logs1944. Update secret detection patterns1955. Standardize timestamp format across services196197Implementation Priority:198- High: Fix secret leakage immediately199- Medium: Add missing context fields200- Low: Standardize timestamp format201```202203## Notes204205- **Structured logging is essential** for modern log analysis and observability206- **Context is more important than message content** - ensure logs can be correlated207- **Log levels should reflect operational importance**, not developer convenience208- **Consider log volume** - too many logs can overwhelm systems and teams209- **Test logging in production-like environments** - logging behavior can differ210- **Monitor your logging** - ensure logs are being captured, processed, and stored211- **Regularly review and update** logging practices as systems evolve212- **Balance human readability with machine parsability** in log formats213- **Document logging standards** and ensure team adherence214- **Consider the cost** of logging - storage, processing, and analysis have expenses