{"library":"oslo-log","title":"Oslo Logging Library","description":"oslo.log is a Python library that provides standardized logging configuration for OpenStack projects. It offers custom formatters, handlers, and support for context-specific logging, enhancing the standard Python logging module. The current version is 8.1.0 and it's actively maintained by the OpenStack community with regular releases.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install oslo.log"],"cli":null},"imports":["from oslo_log import log","from oslo_config import cfg"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom oslo_config import cfg\nfrom oslo_log import log as logging\n\n# Define a configuration group and options (typically done in a separate config file)\nCONF = cfg.CONF\nCONF.register_group(cfg.OptGroup('DEFAULT'))\n\n# Register oslo.log options (required for oslo.log to pick up config)\nlogging.register_options(CONF)\n\n# Set up logging for your application\n# The 'product_name' is usually your application's name\n# The 'version' is your application's version\nDOMAIN = os.environ.get('OSLO_LOG_DOMAIN', 'my_app') # Example for context\nlogging.setup(CONF, DOMAIN, version='1.0.0')\n\n# Get a logger instance\nLOG = logging.getLogger(__name__)\n\n# Log messages\nLOG.info(\"This is an informational message.\")\nLOG.warning(\"This is a warning message.\")\nLOG.error(\"This is an error message.\")\n\n# Example of setting a default log level (if not using a config file)\n# This would typically be done via a config file or oslo.config options\n# For demonstration, setting it programmatically (ensure it's before logging.setup if permanent)\n# logging.set_defaults(default_log_levels=['my_app=DEBUG'])\n","lang":"python","description":"This quickstart demonstrates the basic setup and usage of oslo.log. It involves importing `cfg` from `oslo_config` to manage configuration options, registering `oslo.log`'s options, and then initializing the logging system with `logging.setup()`. Finally, it shows how to obtain a logger and emit messages at different levels.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"7.2.1","pypi_latest":"8.1.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.7,"avg_import_s":0.56,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.49,"mem_mb":10.7,"disk_size":"44.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.6,"import_time_s":0.32,"mem_mb":10.7,"disk_size":"46M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.77,"mem_mb":11.7,"disk_size":"48.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.5,"import_time_s":0.73,"mem_mb":11.7,"disk_size":"50M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.58,"mem_mb":11.4,"disk_size":"49.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.5,"import_time_s":0.67,"mem_mb":11.4,"disk_size":"51M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.64,"mem_mb":12.2,"disk_size":"48.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.6,"import_time_s":0.58,"mem_mb":12.1,"disk_size":"50M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.39,"mem_mb":10,"disk_size":"46.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"oslo.log","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":5.4,"import_time_s":0.4,"mem_mb":10,"disk_size":"48M"}]}}