31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
import sys
|
|
import os
|
|
import logging
|
|
from typing import Optional
|
|
|
|
|
|
def create_logger(name: str,
|
|
level: [str, int],
|
|
stream_stderr: bool = False,
|
|
stream_format: str = "%(asctime)s | %(name)s [%(levelname)s] %(message)s",
|
|
file: bool = False,
|
|
file_path: Optional[None] = None,
|
|
file_format: str = "%(asctime)s | %(name)s [%(levelname)s] %(message)s"):
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(level)
|
|
|
|
stream_handler = logging.StreamHandler(sys.stderr if stream_stderr else sys.stdout)
|
|
stream_handler.setFormatter(logging.Formatter(stream_format))
|
|
logger.addHandler(stream_handler)
|
|
|
|
if file:
|
|
if not file_path:
|
|
file_path = os.path.join("logs", name)
|
|
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
file_handler = logging.FileHandler(file_path)
|
|
file_handler.setFormatter(logging.Formatter(file_format))
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger
|
|
|