import logging
import os
from logging.handlers import TimedRotatingFileHandler
def setup_logger(log_path: str, file_name: str = "server.log"):
log = logging.getLogger('server-logger')
log.setLevel(logging.DEBUG)
if log.handlers:
return log
formatter = logging.Formatter(
'%(asctime)s %(levelname)s thread[%(thread)d] %(module)s.%(funcName)s:%(lineno)d -> %(message)s'
)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(formatter)
log.addHandler(console_handler)
filename = f"{log_path}/{file_name}"
file_handler = TimedRotatingFileHandler(
filename=filename,
when='midnight',
interval=1,
backupCount=7,
encoding='utf-8'
)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
log.addHandler(file_handler)
return log
config_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
os.makedirs(config_path, exist_ok=True)
logger = setup_logger(config_path, "server.log")
if __name__ == '__main__':
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')