Module facetorch.logger
Classes
class CustomJsonFormatter (*args, **kwargs)
-
Expand source code
class CustomJsonFormatter(jsonlogger.JsonFormatter): def add_fields(self, log_record, record, message_dict): super().add_fields(log_record, record, message_dict) # Remove taskName field if it exists and is None if 'taskName' in log_record and log_record['taskName'] is None: del log_record['taskName']
A custom formatter to format logging records as json strings. Extra values will be formatted as str() if not supported by json default encoder
:param json_default: a function for encoding non-standard objects as outlined in https://docs.python.org/3/library/json.html :param json_encoder: optional custom encoder :param json_serializer: a :meth:
json.dumps
-compatible callable that will be used to serialize the log record. :param json_indent: an optional :meth:json.dumps
-compatible numeric value that will be used to customize the indent of the output json. :param prefix: an optional string prefix added at the beginning of the formatted string :param rename_fields: an optional dict, used to rename field names in the output. Rename message to @message: {'message': '@message'} :param static_fields: an optional dict, used to add fields with static values to all logs :param json_indent: indent parameter for json.dumps :param json_ensure_ascii: ensure_ascii parameter for json.dumps :param reserved_attrs: an optional list of fields that will be skipped when outputting json log record. Defaults to all log record attributes: http://docs.python.org/library/logging.html#logrecord-attributes :param timestamp: an optional string/boolean field to add a timestamp when outputting the json log record. If string is passed, timestamp will be added to log record using string as key. If True boolean is passed, timestamp key will be "timestamp". Defaults to False/off.Ancestors
- pythonjsonlogger.jsonlogger.JsonFormatter
- logging.Formatter
Methods
def add_fields(self, log_record, record, message_dict)
-
Expand source code
def add_fields(self, log_record, record, message_dict): super().add_fields(log_record, record, message_dict) # Remove taskName field if it exists and is None if 'taskName' in log_record and log_record['taskName'] is None: del log_record['taskName']
Override this method to implement custom logic for adding fields.
class LoggerJsonFile (name: str = 'facetorch',
level: int = 50,
path_file: str | None = None,
json_format: str = '%(asctime)s %(levelname)s %(message)s')-
Expand source code
class LoggerJsonFile: def __init__( self, name: str = "facetorch", level: int = logging.CRITICAL, path_file: Optional[str] = None, json_format: str = "%(asctime)s %(levelname)s %(message)s", ): """Logger in json format that writes to a file and console. Args: name (str): Name of the logger. level (str): Level of the logger. path_file (str): Path to the log file. json_format (str): Format of the log record. Attributes: logger (logging.Logger): Logger object. """ self.name = name self.level = level self.path_file = path_file self.json_format = json_format self.logger = logging.getLogger(self.name) self.configure() def configure(self): """Configures the logger.""" if self.logger.level == 0 or self.level < self.logger.level: self.logger.setLevel(self.level) if len(self.logger.handlers) == 0: json_handler = logging.StreamHandler() formatter = CustomJsonFormatter(fmt=self.json_format) json_handler.setFormatter(formatter) self.logger.addHandler(json_handler) if self.path_file is not None: os.makedirs(os.path.dirname(self.path_file), exist_ok=True) path_file_handler = logging.FileHandler(self.path_file, mode="w") path_file_handler.setLevel(self.level) self.logger.addHandler(path_file_handler) self.logger.propagate = False
Logger in json format that writes to a file and console.
Args
name
:str
- Name of the logger.
level
:str
- Level of the logger.
path_file
:str
- Path to the log file.
json_format
:str
- Format of the log record.
Attributes
logger
:logging.Logger
- Logger object.
Methods
def configure(self)
-
Expand source code
def configure(self): """Configures the logger.""" if self.logger.level == 0 or self.level < self.logger.level: self.logger.setLevel(self.level) if len(self.logger.handlers) == 0: json_handler = logging.StreamHandler() formatter = CustomJsonFormatter(fmt=self.json_format) json_handler.setFormatter(formatter) self.logger.addHandler(json_handler) if self.path_file is not None: os.makedirs(os.path.dirname(self.path_file), exist_ok=True) path_file_handler = logging.FileHandler(self.path_file, mode="w") path_file_handler.setLevel(self.level) self.logger.addHandler(path_file_handler) self.logger.propagate = False
Configures the logger.