python基础------模块,,一,日志模块:log


一,日志模块:logging

 1 #简单应用 2 import logging 3 logging.debug("hello python") 4 logging.info("hello world") 5 logging.warning("hello java")  #日志级别默认WARNUNG 只显示warning一下的,上面的debug,info没打印出来 6 logging.error("hello C") 7 logging.critical("hello C++") 8  9 #打印结果:10 #WARNING:root:hello java11 #ERROR:root:hello C12 #CRITICAL:root:hello C++13 #

日志的等级从下到上:critical-->error-->warning-->info-->debug

2,灵活设置日志等级,位置,日志格式

 1 import logging 2 #日志等级设置成debug 3 logging.basicConfig(level=logging.DEBUG,  #日志等级设置成debug 4                     format="%(asctime)s %(filename)s %(levelname)s %(message)s", 5                     filename = "test.txt", #设置文件名 6                     filemode = "w",    #以w模式写入内容 7                     ) 8 logging.debug("debug message") 9 logging.info("info message")10 logging.warning("warning message")11 logging.error("error message")12 logging.critical("critical message")

2.1 test.txt文件中的内容:

2017-04-27 19:29:49,808 logging模块.py DEBUG debug message2017-04-27 19:29:49,825 logging模块.py INFO info message2017-04-27 19:29:49,826 logging模块.py WARNING warning message2017-04-27 19:29:49,826 logging模块.py ERROR error message2017-04-27 19:29:49,826 logging模块.py CRITICAL critical message

2.2 format中可能用到的格式化串

 1 ‘‘‘ 2  3 %(name)s Logger的名字 4 %(levelno)s 数字形式的日志级别 5 %(levelname)s 文本形式的日志级别 6 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有 7 %(filename)s 调用日志输出函数的模块的文件名 8 %(module)s 调用日志输出函数的模块名 9 %(funcName)s 调用日志输出函数的函数名10 %(lineno)d 调用日志输出函数的语句所在的代码行11 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示12 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数13 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒14 %(thread)d 线程ID。可能没有15 %(threadName)s 线程名。可能没有16 %(process)d 进程ID。可能没有17 %(message)s用户输出的消息18 ‘‘‘

2.3 logger对象方法:推荐用法

 1 import logging 2 #日志模块 3 def get_logger(): 4     logger = logging.getLogger() #获得一个logger对象 5  6     fh = logging.FileHandler("a.txt") # 创建一个文件流,需要给一个文件参数 7  8     sh = logging.StreamHandler()  #创建一个屏幕流, 9 10     logger.setLevel(logging.DEBUG) #设定最低等级debug11     #写入文件的中的格式12     fm = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")13 14     logger.addHandler(fh)#把文件流添加进来,流向文件15     logger.addHandler(sh) #把屏幕流添加进来,流向屏幕16 17     fh.setFormatter(fm) #在文件流添加写入格式18     sh.setFormatter(fm) #在屏幕流添加写入格式19 20     return logger21 22 logger = get_logger()23 logger.debug("hello world")24 logger.info("world python")25 logger.warning("hello java")26 logger.error("python C")27 logger.critical("hello C++")

2.3 a.txt文件中内容

 1 #内容都是一样的,只是两个流派都弄出来了 2  3 #屏幕上的内容: 4 2017-04-27 19:57:38,336 - root - DEBUG - hello world 5 2017-04-27 19:57:38,337 - root - INFO - world python 6 2017-04-27 19:57:38,337 - root - WARNING - hello java 7 2017-04-27 19:57:38,337 - root - ERROR - python C 8 2017-04-27 19:57:38,338 - root - CRITICAL - hello C++ 9 10 11 #文件中的内容:12 2017-04-27 19:57:38,336 - root - DEBUG - hello world13 2017-04-27 19:57:38,337 - root - INFO - world python14 2017-04-27 19:57:38,337 - root - WARNING - hello java15 2017-04-27 19:57:38,337 - root - ERROR - python C16 2017-04-27 19:57:38,338 - root - CRITICAL - hello C++

二:序列化模块:json 重要

python基础------模块

评论关闭