Set log levels in Azure Functions by hand for 3rd party libraries (#63)

This commit is contained in:
bmc-msft 2020-10-01 14:57:09 -04:00 committed by GitHub
parent d2ee7e5e7d
commit 534d99bb87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 1 deletions

View File

@ -19,7 +19,7 @@ from memoization import cached
from msrestazure.azure_active_directory import MSIAuthentication
from msrestazure.tools import parse_resource_id
from .monkeypatch import allow_more_workers
from .monkeypatch import allow_more_workers, reduce_logging
@cached(ttl=60)
@ -30,6 +30,7 @@ def get_msi() -> MSIAuthentication:
@cached(ttl=60)
def mgmt_client_factory(client_class: Any) -> Any:
allow_more_workers()
reduce_logging()
try:
return get_client_from_cli_profile(client_class)
except CLIError:

View File

@ -7,6 +7,7 @@ import inspect
import logging
WORKERS_DONE = False
REDUCE_LOGGING = False
def allow_more_workers() -> None:
@ -22,3 +23,34 @@ def allow_more_workers() -> None:
entry.frame.f_locals["self"]._sync_call_tp._max_workers = 50
WORKERS_DONE = True
# TODO: Replace this with a better method for filtering out logging
# See https://github.com/Azure/azure-functions-python-worker/issues/743
def reduce_logging() -> None:
global REDUCE_LOGGING
if REDUCE_LOGGING:
return
to_quiet = [
"azure",
"cli",
"grpc",
"concurrent",
"oauthlib",
"msrest",
"opencensus",
"urllib3",
"requests",
"aiohttp",
"asyncio",
"adal-python",
]
for name in logging.Logger.manager.loggerDict: # type: ignore
logger = logging.getLogger(name)
for prefix in to_quiet:
if logger.name.startswith(prefix):
logger.level = logging.WARN
REDUCE_LOGGING = True