Skip to main content

Logging and Error Handling Without Leaks

Never log secrets. Log events and metadata only, and ensure logs have strict permissions.

Secure logging example

import logging, os

LOG_FILE = os.path.expanduser("~/.vault_cli/vault.log")
logging.basicConfig(filename=LOG_FILE, level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")

def log_event(event, name=None):
logging.info("Event: %s Name: %s", event, name if name else "-")

Error handling

Provide user-friendly messages; log details for debugging.

try:
# decrypt or access storage
pass
except Exception as e:
log_event("error", None)
print("Operation failed. Check logs for details.")

Lesson: Logs are for operations, not secrets.