X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=logging_utils.py;h=fdbb7a3d48daecb4e3b81ed4aad4bf0e11a79241;hb=31c81f6539969a5eba864d3305f9fb7bf716a367;hp=0c4694e1056790af1db9dc53a5966a5392310110;hpb=c901f3eb1acf78fd4933d8faeedc517ccafe627e;p=python_utils.git diff --git a/logging_utils.py b/logging_utils.py index 0c4694e..fdbb7a3 100644 --- a/logging_utils.py +++ b/logging_utils.py @@ -8,14 +8,15 @@ import datetime import enum import io import logging -from logging.handlers import RotatingFileHandler, SysLogHandler import os import random import sys -from typing import Callable, Iterable, Mapping, Optional +from logging.config import fileConfig +from logging.handlers import RotatingFileHandler, SysLogHandler +from typing import Any, Callable, Dict, Iterable, List, Mapping, Optional -from overrides import overrides import pytz +from overrides import overrides # This module is commonly used by others in here and should avoid # taking any unnecessary dependencies back on them. @@ -178,7 +179,7 @@ logging_initialized = False # A map from logging_callsite_id -> count of logged messages. -squelched_logging_counts: Mapping[str, int] = {} +squelched_logging_counts: Dict[str, int] = {} def squelch_repeated_log_messages(squelch_after_n_repeats: int) -> Callable: @@ -222,7 +223,7 @@ class SquelchRepeatedMessagesFilter(logging.Filter): """ def __init__(self) -> None: - self.counters = collections.Counter() + self.counters: collections.Counter = collections.Counter() super().__init__() @overrides @@ -313,7 +314,7 @@ class DynamicPerScopeLoggingLevelFilter(logging.Filter): # A map from function_identifier -> probability of logging (0.0%..100.0%) -probabilistic_logging_levels: Mapping[str, float] = {} +probabilistic_logging_levels: Dict[str, float] = {} def logging_is_probabilistic(probability_of_logging: float) -> Callable: @@ -381,7 +382,7 @@ class MillisecondAwareFormatter(logging.Formatter): """ - converter = datetime.datetime.fromtimestamp + converter = datetime.datetime.fromtimestamp # type: ignore @overrides def formatTime(self, record, datefmt=None): @@ -465,7 +466,7 @@ def log_about_logging( def initialize_logging(logger=None) -> logging.Logger: global logging_initialized if logging_initialized: - return + return logging.getLogger() logging_initialized = True if logger is None: @@ -479,10 +480,11 @@ def initialize_logging(logger=None) -> logging.Logger: preexisting_handlers_count += 1 if config.config['logging_config_file'] is not None: - logging.config.fileConfig('logging.conf') + fileConfig(config.config['logging_config_file']) return logger - handlers = [] + handlers: List[logging.Handler] = [] + handler: Optional[logging.Handler] = None # Global default logging level (--logging_level) default_logging_level = getattr( @@ -508,7 +510,8 @@ def initialize_logging(logger=None) -> logging.Logger: if sys.platform not in ('win32', 'cygwin'): if config.config['logging_syslog_facility']: facility_name = 'LOG_' + config.config['logging_syslog_facility'] - facility = SysLogHandler.__dict__.get(facility_name, SysLogHandler.LOG_USER) + facility = SysLogHandler.__dict__.get(facility_name, SysLogHandler.LOG_USER) # type: ignore + assert facility handler = SysLogHandler(facility=facility, address='/dev/log') handler.setFormatter( MillisecondAwareFormatter( @@ -666,13 +669,15 @@ class OutputMultiplexer(object): logger = logging.getLogger(None) self.logger = logger + self.f: Optional[List[Any]] = None if filenames is not None: self.f = [open(filename, 'wb', buffering=0) for filename in filenames] else: - if destination_bitv & OutputMultiplexer.FILENAMES: + if destination_bitv & OutputMultiplexer.Destination.FILENAMES: raise ValueError("Filenames argument is required if bitv & FILENAMES") self.f = None + self.h: Optional[List[Any]] = None if handles is not None: self.h = [handle for handle in handles] else: