51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import os
|
|
import logging
|
|
from datetime import datetime
|
|
|
|
class LogService:
|
|
def __init__(self, log_dir="logs"):
|
|
self.log_dir = log_dir
|
|
os.makedirs(self.log_dir, exist_ok=True)
|
|
|
|
log_filename = os.path.join(self.log_dir, f"{datetime.now().strftime('%Y-%m-%d')}.log")
|
|
|
|
# Tạo logger
|
|
self.logger = logging.getLogger("TaskLogger")
|
|
self.logger.setLevel(logging.INFO)
|
|
self.logger.propagate = False
|
|
|
|
# Xóa handler cũ để tránh duplicate log khi import nhiều lần
|
|
if self.logger.handlers:
|
|
self.logger.handlers.clear()
|
|
|
|
# Ghi file
|
|
file_handler = logging.FileHandler(log_filename, encoding="utf-8")
|
|
file_handler.setLevel(logging.INFO)
|
|
|
|
# In ra console
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.INFO)
|
|
|
|
# Format log
|
|
formatter = logging.Formatter(
|
|
'%(asctime)s - %(levelname)s - %(message)s',
|
|
datefmt='%Y-%m-%d %H:%M:%S'
|
|
)
|
|
file_handler.setFormatter(formatter)
|
|
console_handler.setFormatter(formatter)
|
|
|
|
self.logger.addHandler(file_handler)
|
|
self.logger.addHandler(console_handler)
|
|
|
|
def info(self, message: str):
|
|
self.logger.info(message)
|
|
|
|
def error(self, message: str):
|
|
self.logger.error(message)
|
|
|
|
def warning(self, message: str):
|
|
self.logger.warning(message)
|
|
|
|
# Singleton instance dùng chung toàn app
|
|
log_service = LogService()
|