可以使用logging来输出log信息,也可以把log信息保存到文件。log等级默认是WARNNING,当然你也可以自己设置别的。在开发阶段可以输出多的信息,当release时,可以只输出关键信息。
1.直接在屏幕上输出
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger('myLog')
logger.info("log info!")
logger.debug("log debug!")
logger.warning("log warning!")
一些参数:
%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息
2.把日志输出到文件
这样的话,屏幕上是不会输出的。log的等级都设置成一样的,如果不一样会怎么样 我没试过。
logger = logging.getLogger('myLog')
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("log info!")
logger.debug("log debug!")
logger.warning("log warning!")
打开项目下面的log.txt文件,就能看到输入的信息了
3.输出到屏幕同时保存到文件
logger = logging.getLogger('myLog')
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)
logger.addHandler(handler)
logger.addHandler(console)
logger.info("log info!")
logger.debug("log debug!")
logger.warning("log warning!")
在屏幕是就能看到和文件里一样的log了