WARNING 级别及更高级别的日志会同时写入 Telegram 和文件,但仅 INFO 级别的日志不会写入文件。
有一个脚本:
import logging
import tg_logger
import os
from dotenv import load_dotenv
from pathlib import Path
from logging.handlers import RotatingFileHandler
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
if os.path.exists(dotenv_path):
load_dotenv(dotenv_path)
token = os.getenv("TELEGRAM_BOT_TOKEN")
users = [os.getenv("TELEGRAM_CHAT_ID")]
script_path = Path(__file__).resolve()
script_name = os.path.splitext(os.path.basename(script_path))[0]
log_dir = script_path.parent
log_file = Path(str(log_dir) + "/" + script_name + ".log")
logger = logging.getLogger(script_name)
tg_logger.setup(logger, token=token, users=users, tg_format="<b><u>%(name)s</u> : %(levelname)s</b>\n\n<code>%(message)s</code>")
file_handler = RotatingFileHandler(log_file, maxBytes=1024*1024, backupCount=10)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(file_handler)
logger.setLevel(logging.WARNING)
logger.info(f"Hello from tg_logger by {script_name}")
logger.warning(f"Test WARNING {script_name}")
#logger.error(f"Test ERROR {script_name}")
预计 INFO 日志记录级别将仅保存到文件中,而 WARNING 和 ERROR 级别将保存到文件中并发送到电报。
我真的很需要,帮帮忙!
PS 如果这对任何人都很重要,Python 3.11.4