标签:ogg cal evel 多个 port etl and get orm
1 import logging 2 3 logging.basicConfig( 4 level=logging.DEBUG, 5 filename="logger.log" 6 ) 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‘) 13 14 ## --------------------- logger 15 import logging 16 def logger(): 17 logger = logging.getLogger() 18 19 fh = logging.FileHandler("test_log") 20 ch = logging.StreamHandler() 21 22 fm = logging.Formatter(‘%(asctime)s %(message)s‘) 23 # fm = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) 24 fh.setFormatter(fm) 25 ch.setFormatter(fm) 26 27 logger.addHandler(fh) 28 logger.addHandler(ch) 29 logger.setLevel("DEBUG") 30 return logger 31 32 logger = logger() 33 34 logger.debug(‘logger debug message‘) 35 logger.info(‘logger info message‘) 36 logger.warning(‘logger warning message‘) 37 logger.error(‘logger error message‘) 38 logger.critical(‘logger critical message‘) 39 40 import logging 41 42 logger = logging.getLogger() 43 # 创建一个handler,用于写入日志文件 44 fh = logging.FileHandler(‘test.log‘) 45 46 # 再创建一个handler,用于输出到控制台 47 ch = logging.StreamHandler() 48 49 formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) 50 51 fh.setFormatter(formatter) 52 ch.setFormatter(formatter) 53 54 logger.addHandler(fh) #logger对象可以添加多个fh和ch对象 55 logger.addHandler(ch) 56 57 logger.debug(‘logger debug message‘) 58 logger.info(‘logger info message‘) 59 logger.warning(‘logger warning message‘) 60 logger.error(‘logger error message‘) 61 logger.critical(‘logger critical message‘) 62 63 ################################################## 64 import logging 65 66 logger1 = logging.getLogger(‘mylogger‘) 67 logger1.setLevel(logging.DEBUG) 68 69 logger2 = logging.getLogger(‘mylogger‘) 70 logger2.setLevel(logging.INFO) 71 72 fh = logging.FileHandler("test_log_new") 73 ch = logging.StreamHandler() 74 75 logger1.addHandler(fh) 76 logger1.addHandler(ch) 77 78 logger2.addHandler(fh) 79 logger2.addHandler(ch) 80 81 logger1.debug(‘logger1 debug message‘) 82 logger1.info(‘logger1 info message‘) 83 logger1.warning(‘logger1 warning message‘) 84 logger1.error(‘logger1 error message‘) 85 logger1.critical(‘logger1 critical message‘) 86 87 logger2.debug(‘logger2 debug message‘) 88 logger2.info(‘logger2 info message‘) 89 logger2.warning(‘logger2 warning message‘) 90 logger2.error(‘logger2 error message‘) 91 logger2.critical(‘logger2 critical message‘) 92 ## 结果 93 ## logger1 info message 94 ## logger1 warning message 95 ## logger1 error message 96 ## logger1 critical message 97 ## logger2 info message 98 ## logger2 warning message 99 ## logger2 error message 100 ## logger2 critical message# 101 ## 这里有两个个问题: 102 ## <1>我们明明通过logger1.setLevel(logging.DEBUG)将logger1的日志级别设置为了DEBUG,为何显示的时候没有显示出DEBUG级别的日志信息,而是从INFO级别的日志开始显示呢? 103 ## 原来logger1和logger2对应的是同一个Logger实例,只要logging.getLogger(name)中名称参数name相同则返回的Logger实例就是同一个,且仅有一个,也即name与Logger实例一一对应。在logger2实例中通过logger2.setLevel(logging.INFO)设置mylogger的日志级别为logging.INFO,所以最后logger1的输出遵从了后来设置的日志级别。 104 ## <2>为什么logger1、logger2对应的每个输出分别显示两次? 105 ## 这是因为我们通过logger = logging.getLogger()显示的创建了root Logger,而logger1 = logging.getLogger(‘mylogger‘)创建了root Logger的孩子(root.)mylogger,logger2同样。而孩子,孙子,重孙……既会将消息分发给他的handler进行处理也会传递给所有的祖先Logger处理。 106 ## ok,那么现在我们把 107 import logging 108 109 logger = logging.getLogger() 110 111 logger1 = logging.getLogger(‘mylogger‘) 112 logger1.setLevel(logging.DEBUG) 113 114 fh = logging.FileHandler("test_log_new") 115 ch = logging.StreamHandler() 116 117 logger.addHandler(fh) 118 logger.addHandler(ch) 119 120 logger1.addHandler(fh) 121 logger1.addHandler(ch) 122 123 124 logger.debug(‘logger debug message‘) 125 logger.info(‘logger info message‘) 126 logger.warning(‘logger warning message‘) 127 logger.error(‘logger error message‘) 128 logger.critical(‘logger critical message‘) 129 130 logger1.debug(‘logger1 debug message‘) 131 logger1.info(‘logger1 info message‘) 132 logger1.warning(‘logger1 warning message‘) 133 logger1.error(‘logger1 error message‘) 134 logger1.critical(‘logger1 critical message‘) 135 ## 结果 136 ## logger warning message 137 ## logger error message 138 ## logger critical message 139 ## logger1 debug message 140 ## logger1 debug message 141 ## logger1 info message 142 ## logger1 info message 143 ## logger1 warning message 144 ## logger1 warning message 145 ## logger1 error message 146 ## logger1 error message 147 ## logger1 critical message 148 ## logger1 critical message 149 ## 因为我们注释了logger对象显示的位置,所以才用了默认方式,即标准输出方式。因为它的父级没有设置文件显示方式,
150 ##所以在这里只打印了一次。孩子,孙子,重孙……可逐层继承来自祖先的日志级别、Handler、Filter设置,也可以通过
151 ##Logger.setLevel(lel)、Logger.addHandler(hdlr)、Logger.removeHandler(hdlr)、Logger.addFilter(filt)、Logger.removeFilter(filt)。
152 ##设置自己特别的日志级别、Handler、Filter。若不设置则使用继承来的值。
标签:ogg cal evel 多个 port etl and get orm
原文地址:https://www.cnblogs.com/humanskin/p/9000460.html