{"library":"loguru","title":"Loguru Python Logging","description":"Simple Python logging library. Current version: 0.7.3 (Mar 2026). One global logger — no instantiation needed, just import. Default sink is stderr (not stdout). diagnose=True is the DEFAULT — shows variable values in tracebacks — leaks sensitive data in production. Must call logger.remove() before reconfiguring. Library authors must never call logger.add() — use logger.disable() instead. enqueue=True requires logger.complete() on shutdown to flush queued messages.","language":"python","status":"active","last_verified":"Tue May 12","install":{"commands":["pip install loguru"],"cli":null},"imports":["import sys\nfrom loguru import logger\n\n# Remove default stderr handler before reconfiguring\nlogger.remove()\n\n# Add stdout handler with INFO level\nlogger.add(\n    sys.stdout,\n    level='INFO',\n    format='{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{line} | {message}',\n    diagnose=False,   # IMPORTANT: disable in production — prevents variable leak\n    backtrace=True\n)\n\n# Add file sink with rotation\nlogger.add(\n    'logs/app.log',\n    level='DEBUG',\n    rotation='10 MB',\n    retention='7 days',\n    compression='zip',\n    diagnose=False,\n    serialize=False\n)\n\nlogger.info('App started')\nlogger.debug('Debug message')\nlogger.warning('Watch out')\n\n# Exception catching\ntry:\n    1 / 0\nexcept Exception:\n    logger.exception('Division failed')","# In a library — NEVER call logger.add()\nfrom loguru import logger\n\n# Disable by default — let app developer enable if they want\nlogger.disable(__name__)\n\ndef my_library_function():\n    logger.debug('Library internal log')  # no-op unless enabled by app"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"# pip install loguru\nimport sys\nfrom loguru import logger\n\n# Reconfigure: remove default stderr, add stdout + file\nlogger.remove()\nlogger.add(sys.stdout, level='INFO', diagnose=False)\nlogger.add('app.log', level='DEBUG', rotation='50 MB', diagnose=False)\n\n# Basic logging\nlogger.debug('Debug message')\nlogger.info('Server started on port 8000')\nlogger.warning('Low disk space')\nlogger.error('Connection failed')\nlogger.critical('Database unreachable')\n\n# Exception logging with full traceback\ntry:\n    result = 1 / 0\nexcept ZeroDivisionError:\n    logger.exception('Calculation failed')  # logs traceback automatically\n\n# Catch decorator\n@logger.catch\ndef risky_function(x):\n    return 100 / x\n\nrisky_function(0)  # caught and logged automatically\n\n# Structured context with bind()\nrequest_logger = logger.bind(request_id='req-123', user_id='usr-456')\nrequest_logger.info('Processing payment')\n\n# JSON output for log aggregators\nlogger.add('app.json', serialize=True, diagnose=False)\n\n# Async / multiprocess safe\nlogger.add('async.log', enqueue=True, diagnose=False)\n# On shutdown:\nimport asyncio\nasyncio.run(logger.complete())  # flush queued messages","lang":"python","description":"Loguru — reconfigure, file rotation, exception catching, structured context.","tag":"stale","tag_description":"widespread failures or data too old to trust","last_tested":"2026-04-23","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","last_tested":"2026-05-12","installed_version":null,"pypi_latest":null,"is_stale":null,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":null,"avg_import_s":0,"wheel_type":null},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"18.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"20.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"12.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"11.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"17.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"loguru","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"18M"}]}}