import logging
import os
from logging import handlers
from pathlib import Path
from logs_tool.log_config import CONSOLE_CONF
log_config = CONSOLE_CONF.get("log")
def _get_log_file_path(project):
logger_file = log_config.get("log_file")
logger_dir = log_config.get("log_dir")
res_dir = None
if logger_file:
if not logger_dir:
return logger_file
else:
res_dir = os.path.join(logger_dir, logger_file)
return res_dir
if logger_dir:
if not os.path.exists(logger_dir):
os.makedirs(logger_dir)
os.chmod(logger_dir, mode=0o755)
res_dir = os.path.join(logger_dir, f"{project}.log")
return res_dir
return res_dir
def setup(project_name):
"""
init log config
:param project_name:
"""
log_root = logging.getLogger()
for handler in list(log_root.handlers):
log_root.removeHandler(handler)
log_path = _get_log_file_path(project_name)
if log_path:
file_log = handlers.RotatingFileHandler(
log_path, maxBytes=log_config.get("log_file_max_size"),
backupCount=log_config.get("log_file_backup_count"))
log_root.addHandler(file_log)
for handler in log_root.handlers:
handler.setFormatter(
logging.Formatter(
fmt=log_config.get("logging_context_format_string"),
datefmt=log_config.get("log_date_format")))
if log_config.get("debug"):
log_root.setLevel(logging.DEBUG)
else:
log_root.setLevel(logging.INFO)
return log_root
_instance_tag = os.environ.get("OGRAC_INSTANCE_TAG", "").strip()
_project_name = f"ograc_logs_handler_{_instance_tag}" if _instance_tag else "ograc_logs_handler"
LOGS_HANDLER_LOG = setup(_project_name)
_log_file_path = _get_log_file_path(_project_name)
if _log_file_path and os.path.exists(_log_file_path):
os.chmod(_log_file_path, 0o640)