def init(): file_handler = logging.FileHandler( path.join(path.dirname(__file__), "log", "mybot.log")) file_handler.setLevel(level=logging.INFO) formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") file_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.info("初始化完毕!准备开始启动服务!")
def initApp() -> Quart: assert nonebot.scheduler # Check if scheduler exists # Initialize logging loggingPath = os.path.join(LOG_FILE_DIR, "{time}.log") loguruHandler = _LoguruHandler() loguruLogger.add(loggingPath, enqueue=True, encoding="utf-8") botLogger.handlers.clear() botLogger.addHandler(loguruHandler) # Initialize settings nonebot.init(settings) nonebot.load_plugins("plugins", "plugins") nonebot.logger.debug( f"The robot is currently configured as: {convertSettingsToDict()}" ) bot = nonebot.get_bot() bot.logger.handlers.clear() bot.logger.addHandler(_LoguruHandler()) return bot.asgi
def patch_nonebot(self): ''' Patches the logger so that we can copy the logging output from nonebot. Add a stop endpoint so that we can exit NoneBot thread. ''' que = self.nb_log_queue class _Handler(logging.Handler): def emit(self, record: logging.LogRecord) -> None: que.put_nowait(record) from nonebot.log import logger logger.addHandler(_Handler()) from nonebot import get_bot bot = get_bot() @bot.server_app.route('/exit') async def _(): import sys sys.exit(0)
'plugins.' + dirname) # 检查是否有对应 data 文件夹, 没有就创建一个 if not path.isdir(path.join('data', dirname)): os.makedirs(path.join('data', dirname)) # # 设置 DEBUG 日志 # debug_handler = logging.handlers.TimedRotatingFileHandler( # filename=path.join('log', 'debug.log'), # when='midnight', # interval=1, # backupCount=3, # 保留日志个数, 0不删除 # encoding='utf-8' # ) # debug_handler.setLevel(logging.DEBUG) # debug_handler.setFormatter(logging.Formatter("[%(asctime)s] %(levelname)s: %(message)s")) # logger.addHandler(debug_handler) # 设置 ERROR 日志 error_handler = logging.handlers.TimedRotatingFileHandler( filename=path.join('log', 'error.log'), when='midnight', interval=1, backupCount=3, # 保留日志个数, 0不删除 encoding='utf-8') error_handler.setLevel(logging.ERROR) error_handler.setFormatter( logging.Formatter("[%(asctime)s] %(levelname)s: %(message)s")) logger.addHandler(error_handler) nonebot.run()
import os from pathlib import Path from nonebot.log import logger as nblogger from logging import handlers, Formatter _dir_name = "logs" if not os.path.exists(_dir_name): os.mkdir(_dir_name) log_dir = Path(_dir_name) # 往文件里写入 指定间隔时间自动生成文件的处理器 # 实例化TimedRotatingFileHandler # interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除 # when是间隔的时间单位,单位有以下几种: # S 秒 M 分 H 小时、 D 天、 W 每星期(interval==0时代表星期一) fh = handlers.TimedRotatingFileHandler( filename=str(log_dir / "nonebot.log"), when="D", backupCount=30, encoding="utf-8", ) fh.setFormatter( Formatter( "[%(asctime)s %(name)s] %(levelname)s: [%(filename)s %(funcName)s] > %(message)s", "%Y-%m-%d %H:%M:%S", )) nblogger.addHandler(fh)
# 创建日志文件 if not os.path.exists(os.path.join(os.path.dirname(__file__), 'omega_miya', 'log', log_file_name)): # 注意windowds下是没有node的,只能用open方法创建文件 try: os.mknod(os.path.join(os.path.dirname(__file__), 'omega_miya', 'log', log_file_name)) logger.info(log_file_name + ': 日志文件已创建') except AttributeError: log_path = os.path.dirname(__file__) + '/omega_miya/log/' + log_file_name with open(log_path, 'w+') as f: logger.info(log_file_name + ': 日志文件已创建') f_handler = logging.FileHandler( os.path.join(os.path.dirname(__file__), 'omega_miya', 'log', log_file_name), encoding="utf-8") f_handler.setFormatter( logging.Formatter('[%(asctime)s %(name)s] %(levelname)s: %(message)s')) # 增加日志文件输出 logger.addHandler(f_handler) # 设置输出级别 logger.setLevel(logging.INFO) # 加载数据库模块 try: nonebot.load_plugins( os.path.join(os.path.dirname(__file__), 'omega_miya', 'database'), 'omega_miya.database' ) except Exception as e: nonebot.log.logger.error(f'NONEBOT Init Database ERROR: {e}') sys.exit(f'Init Database ERROR: {e}') # 从插件文件夹中加载插件 try: