logging
utils/log.py
import logging
import os
# 1. 创建一个logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG) # Log等级总开关
# 2.控制台的handler
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 3. 写入文件的handler
root_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
fh = logging.FileHandler(filename=os.path.join(root_dir, 'log/run.log'), encoding='utf-8')
# 4. 定义handler的输出格式
format ='%(asctime)s - %(filename)s - %(lineno)d - %(name)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(fmt=format)
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# 将logger添加到handler里面
logger.addHandler(ch)
logger.addHandler(fh)
调用:
import pymysql
from utils.log import logger
logger.error('数据库连接失败')
loguru
utils/Loggings.py
import os
from loguru import logger
class Loggings:
root_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
filename = os.path.join(root_dir, 'log/run.log')
__instance = None
logger.add(
sink=filename, # 写入文件路径
rotation="500MB",
encoding="utf-8",
enqueue=True,
retention="10 days"
)
def __new__(cls, *args, **kwargs):
if not cls.__instance:
cls.__instance = super(Loggings, cls).__new__(cls, *args, **kwargs)
return cls.__instance
def info(self, msg):
return logger.info(msg)
def debug(self, msg):
return logger.debug(msg)
def warning(self, msg):
return logger.warning(msg)
def error(self, msg):
return logger.error(msg)
调用:
from utils.Loggings import Loggings
log = Loggings()
log.info('this is a info')