1 # logging 日志模块 ****** 2 # 记录用户行为或者代码执行过程 3 # print 来回注释比较麻烦的 4 # logging 5 # 我能够“一键”控制 6 # 排错的时候需要打印很多细节来帮助我排错 7 # 严重的错误记录下来 8 # 有一些用户行为 有没有错都要记录下来 9 10 # basicconfig 配置打印日志的功能11 # 简单 能做的事情相对少12 # 中文的乱码问题13 # 不能同时往文件和屏幕上输出14 # import logging15 # logging.basicConfig(level=logging.DEBUG,16 # format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',17 # datefmt='%a, %d %b %Y %H:%M:%S',18 # filename = "test.log",19 # filemode = "a")20 21 # try:22 # int(input('num >>'))23 # except ValueError:24 # logging.error('输入的值不是一个数字')25 #26 # logging.debug('debug message') # 低级别的 # 排错信息27 # logging.info('info message') # 正常信息28 # logging.warning('warning message') # 警告信息29 # logging.error('error message') # 错误信息30 # logging.critical('critical message') # 高级别的 # 严重错误信息31 #32 # print('%(key)s'%{'key':'value'})33 # # print('%s'%('key','value'))34 35 36 37 # logger 对象 和 文件操作符 关联38 # 稍微复杂一些,但是能做的事情比较多一些39 40 import logging41 42 logger = logging.getLogger() # 管对象的43 44 fh = logging.FileHandler("log.log",encoding="utf-8") # 管文件的 # 下面那个是管格式的45 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')46 fh.setFormatter(formatter) # 需要连起来 文件要被格式关联约束起来47 logger.addHandler(fh) # logger 要和文件操作符关联起来48 49 sh = logging.StreamHandler() # 创建一个屏幕控制对象50 formatter2 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s [line:%(lineno)d] : %(message)s')51 logger.addHandler(sh)52 sh.setFormatter(formatter2)53 54 logging.debug('debug message') # 低级别的 # 排错信息55 logging.info('info message') # 正常信息56 logging.warning('警告错误') # 警告信息57 logging.error('error message') # 错误信息58 logging.critical('critical message') # 高级别的 # 严重错误信息59 60 try:61 int(input('num >>'))62 except ValueError:63 logging.error('输入的值不是一个数字')64 65 # 程序的充分解耦66 # 让程序变得高可定制67 68 # zabbix 监控系统69 70 # logging71 # 有5种级别的日志记录模式 :72 # 两种配置方式:basicconfig 、log对象