SaliencyMapDemo / src /__init__.py
umyuu
リファクタリング
46c8ce2
raw
history blame
1.39 kB
# -*- coding: utf-8 -*-
"""src Module"""
from datetime import datetime
import logging
import re
from zoneinfo import ZoneInfo
from src.utils import get_package_version
__all__ = ["LocalTimeFormatter"]
PROGRAM_NAME: str = 'SaliencyMapDemo'
__version__ = get_package_version()
class LocalTimeFormatter(logging.Formatter):
"""
ログの時刻表示を指定したタイムゾーンに変換するクラス。
"""
time_zone: str = "GMT"
pattern = re.compile(r"([\.|,]\%\d{1,}f)(\%z)?", re.IGNORECASE)
"""
%Y-%m-%dT%H:%M:%S.%03f
%Y-%m-%dT%H:%M:%S.%03f%z
"""
def formatTime(self, record, datefmt=None):
dt = datetime.fromtimestamp(
record.created,
ZoneInfo(self.time_zone)
)
if datefmt is None:
s = dt.strftime(self.default_time_format)
return s
t = dt.strftime(re.sub(self.pattern, "", datefmt))
match = re.search(self.pattern, datefmt)
if match is None:
return t
groups = match.groups()
msec_format = groups[0] if groups[0] else ""
time_zone_format = groups[1] if groups[1] else ""
time_zone_str = dt.strftime(time_zone_format)
msec_format = msec_format.replace("f", "d")
s = f"{t}{msec_format % record.msecs }{time_zone_str}"
return s