介绍
这是我的python3.8+tornado6.1项目中的代码片段,记录python的异步日志第三方库aiologger的用法,需要aiofiles支持,结合pathlib、asyncio食用。
代码
# coding: utf8
"""
日志
"""
import asyncio
import logging
from aiologger import Logger
from aiologger.formatters.base import Formatter
from aiologger.handlers.files import AsyncTimedRotatingFileHandler
from pathlib import Path
BASE_DIR = Path().cwd()
def get_logger(name: str = "log") -> Logger:
"""异步日志,按日期切割"""
logger: Logger = Logger(name="log_sys", level=logging.DEBUG)
logfile_path = Path(BASE_DIR, "logs", f"{name}.log")
logfile_path.parent.mkdir(parents=True, exist_ok=True)
logfile_path.touch(exist_ok=True)
atr_file_handler = AsyncTimedRotatingFileHandler(
filename=str(logfile_path),
interval=1,
backup_count=30,
encoding="utf8"
)
formatter = Formatter(
"%(asctime)s | %(levelname)s | %(filename)s:%(lineno)d | %(message)s")
atr_file_handler.formatter = formatter
logger.add_handler(atr_file_handler)
return logger
log_sys: Logger = get_logger("system")
log_si: Logger = get_logger("interface")
async def start(msg: str):
"""启动日志"""
await log_sys.info(msg)
async def shutdown():
"""停掉日志"""
await log_sys.shutdown()
await log_si.shutdown()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(log.start("服务启动成功"))
loop.run_until_complete(log.shutdown())