Last active
June 25, 2021 08:46
-
-
Save molcay/7916588b830b4336d1c6520dad750a97 to your computer and use it in GitHub Desktop.
Utililty class and method for general-purposed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import logging | |
import logging.handlers as handlers | |
from pathlib import Path | |
DEFAULT_LOG_FORMAT = '%(asctime)s [%(levelname)s] (%(name)s) [%(filename)s:%(lineno)d] [%(threadName)s] - %(message)s' | |
LOG_BASE_DIR = Path('/var/log/app') | |
def create_logger(name: str, | |
log_level: str = logging.INFO, | |
log_format: str = DEFAULT_LOG_FORMAT, | |
has_stream_handler: bool = True, | |
has_timed_rotating_file_handler: bool = True, | |
**kwargs) -> logging.Logger: | |
_logger: logging.Logger = logging.getLogger(name) | |
_logger.setLevel(log_level) | |
formatter: logging.Formatter = logging.Formatter(log_format) | |
if has_timed_rotating_file_handler: | |
handler: logging.Handler = handlers.TimedRotatingFileHandler( | |
filename=str(LOG_BASE_DIR / f'{name}.log'), | |
encoding='UTF-8', | |
when=kwargs.get('when', 'midnight'), | |
backupCount=kwargs.get('backupCount', 30), | |
**kwargs | |
) | |
handler.setFormatter(formatter) | |
handler.setLevel(log_level) | |
_logger.addHandler(handler) | |
if has_stream_handler: | |
handler = logging.StreamHandler() | |
handler.setFormatter(formatter) | |
handler.setLevel(log_level) | |
_logger.addHandler(handler) | |
return _logger |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
##### Logging ##### | |
class Logger: | |
def __init__(self, path: str, logger_name: str): | |
self.path = path | |
self.logger_name = logger_name | |
def logger_init(self): | |
log_path = self.path | |
logger = logging.getLogger(self.logger_name) | |
logger.setLevel(logging.INFO) | |
# log formatting | |
log_format = '%(asctime)s [%(levelname)s] (%(name)s) - [%(filename)s:%(lineno)d]: ' \ | |
'[%(threadName)s] - %(message)s ' | |
formatter = logging.Formatter(log_format) | |
# log config | |
handler = TimedRotatingFileHandler(log_path, when="midnight", interval=1, encoding="utf-8") | |
handler.setFormatter(formatter) | |
logger.addHandler(handler) | |
handler = logging.StreamHandler() | |
handler.setFormatter(formatter) | |
logger.addHandler(handler) | |
return logger | |
def get_app_logger(is_prod: bool = False): | |
logger = logging.getLogger('app') | |
log_file_dir = 'logs' | |
if is_prod: | |
log_file_dir = '/var/log/' | |
if not logger.hasHandlers(): | |
return Logger(os.path.join(dir_path, f'{log_file_dir}/app.log'), 'app').logger_init() | |
return logger | |
##### .Logging ##### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment