{"library":"logging-azure-rest","title":"Azure REST API Logging Handler","description":"logging-azure-rest is a Python library providing a multi-threaded logging handler and service extension for sending application logs to an Azure Log Workspace via its REST API. It offers an asynchronous solution to upload logs, queuing them in a request pool and sending them in bulk, aiming for transparent logging without disrupting the main application process. The current version is 1.3.0, and its release cadence is project-driven, with the last update in June 2021.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install logging-azure-rest"],"cli":null},"imports":["from logging_azure.handler import AzureLogServiceHandler"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import logging\nimport logging.config\nimport os\nimport time\n\n# Set required environment variables for the handler\nos.environ['AZURE_LOG_CUSTOMER_ID'] = os.environ.get('AZURE_LOG_CUSTOMER_ID', 'YOUR_AZURE_LOG_CUSTOMER_ID')\nos.environ['AZURE_LOG_SHARED_KEY'] = os.environ.get('AZURE_LOG_SHARED_KEY', 'YOUR_AZURE_LOG_SHARED_KEY')\nos.environ['AZURE_LOG_DEFAULT_NAME'] = os.environ.get('AZURE_LOG_DEFAULT_NAME', 'MyPythonAppLogs')\n\nLOGGING_CONFIG = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'formatters': {\n        'azure': {\n            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'\n        },\n        'default': {\n            'format': '%(levelname)s:%(name)s:%(message)s'\n        }\n    },\n    'handlers': {\n        'console': {\n            'level': 'DEBUG',\n            'class': 'logging.StreamHandler',\n            'formatter': 'default'\n        },\n        'azure_log_oms': {\n            'level': 'INFO',\n            'class': 'logging_azure.handler.AzureLogServiceHandler',\n            'formatter': 'azure'\n        }\n    },\n    'loggers': {\n        'my_app': {\n            'handlers': ['console', 'azure_log_oms'],\n            'level': 'INFO',\n            'propagate': False\n        },\n        '': {\n            'handlers': ['console'],\n            'level': 'WARNING',\n            'propagate': True\n        }\n    },\n    'root': {\n        'handlers': ['console'],\n        'level': 'WARNING'\n    }\n}\n\nlogging.config.dictConfig(LOGGING_CONFIG)\n\nlogger = logging.getLogger('my_app')\n\nlogger.info('This is an informational message sent to Azure Log Analytics.')\nlogger.warning('This is a warning message. Take action!')\nlogger.error('An error occurred in the application.')\n\nprint(\"Logs sent. Check your Azure Log Analytics workspace (table: MyPythonAppLogs_CL).\")\nprint(\"Note: Logs may take up to 30 minutes to appear initially in Azure.\")\n# Give the background thread some time to send logs before exiting\ntime.sleep(10)\n","lang":"python","description":"This quickstart demonstrates how to configure the `logging-azure-rest` handler using Python's `logging.config.dictConfig`. It sets up a logger that outputs to the console and sends INFO, WARNING, and ERROR level messages to Azure Log Analytics. Ensure `AZURE_LOG_CUSTOMER_ID`, `AZURE_LOG_SHARED_KEY`, and `AZURE_LOG_DEFAULT_NAME` environment variables are set with your Azure Log Workspace details. The `AZURE_LOG_DEFAULT_NAME` will appear as 'MyPythonAppLogs_CL' (or whatever you set) in Azure.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"1.3.0","pypi_latest":"1.3.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.3,"avg_import_s":0.74,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.62,"mem_mb":12.6,"disk_size":"23.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.69,"mem_mb":12.5,"disk_size":"23.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4.5,"import_time_s":0.43,"mem_mb":12.6,"disk_size":"24M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.5,"mem_mb":12.5,"disk_size":"24M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.87,"mem_mb":13.8,"disk_size":"25.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.03,"mem_mb":13.8,"disk_size":"25.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4.3,"import_time_s":0.78,"mem_mb":13.8,"disk_size":"26M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.8,"mem_mb":13.8,"disk_size":"26M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.76,"mem_mb":14.3,"disk_size":"17.3M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.9,"mem_mb":14.2,"disk_size":"17.2M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.77,"mem_mb":14.3,"disk_size":"18M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.89,"mem_mb":14.2,"disk_size":"18M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.74,"mem_mb":14.6,"disk_size":"17.1M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.84,"mem_mb":14.5,"disk_size":"16.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.6,"import_time_s":0.72,"mem_mb":14.6,"disk_size":"18M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.89,"mem_mb":14.5,"disk_size":"17M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.63,"mem_mb":12.2,"disk_size":"22.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.66,"mem_mb":12.2,"disk_size":"22.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":5,"import_time_s":0.56,"mem_mb":12.2,"disk_size":"23M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"logging-azure-rest","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.67,"mem_mb":12.2,"disk_size":"23M"}]}}