使用logging模块来写日志:
日志直接输出到准备输出:
import logging
logging.basicConfig(level=logging.WARNING,
format="%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s : %(message)s")
# 直接使用logging来写日志,会同时写在文件和标准输出中
logging.debug("debug level")
logging.info("info level")
logging.warning("warning level")
logging.error("error level")
logging.critical("critical level")
日志输出到文件:
import logging
logging.basicConfig(level=logging.WARNING,
filename='basic_log.txt',
filemode='w',
format="%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s : %(message)s")
# 直接使用logging来写日志,会同时写在文件和标准输出中
logging.debug("debug level")
logging.info("info level")
logging.warning("warning level")
logging.error("error level")
logging.critical("critical level")
同时向不同地方写日志:
import logging
# 创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# 创建一个handler,用于写入日志文件
logfile = './log.txt'
fh = logging.FileHandler(logfile, mode='a')
# 写入日志文件的级别为DEBUG
fh.setLevel(logging.DEBUG)
# 创建另一个handler,用于将日志输出到标准输出
ch = logging.StreamHandler()
# 标准输出的日志级别的WARNING
ch.setLevel(logging.WARNING)
# 定义日志格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s : %(message)s")
# 将格式应用到fh和ch两个handler
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 将handler装载到logger中
logger.addHandler(fh)
logger.addHandler(ch)
# 使用logger来写日志,会同时写在文件和标准输出中
logger.debug("debug level")
logger.info("info level")
logger.warning("warning level")
logger.error("error level")
logger.critical("critical level")