Xiang Wang @ 2018-09-04 18:49:59
-
基础
import logging
logging.basicConfig( level=logging.INFO, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S', filename='./log/test.log', filemode='a')
log = logging.getLogger()
ch = logging.StreamHandler() ch.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s') ch.setFormatter(formatter)
log.addHandler(ch)
-
保存到文件的同时,输入的终端
import logging logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler() ch.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') ch.setFormatter(formatter)
fh = logging.FileHandler(filename='log.log') fh.setLevel(logging.WARNING) f_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') fh.setFormatter(f_formatter)
logger.addHandler(ch) logger.addHandler(fh)
logger.info("info message") logger.warn("warn message")
-
添加过滤器,只记录info,不记录warning
import logging logger = logging.getLogger('test_filter') logger.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.INFO) ch.setFormatter( logging.Formatter('%(user)s %(message)s') ) class RamwinFilter(logging.Filter): def filter(self, record): record.user = 'ramwin' if record.levelname == 'WARNING': return False print(record.levelname) return True f = RamwinFilter() logger.addHandler(ch) logger.addFilter(f) logger.info("info") logger.warning("warning")
debug(msg, *args, **kwargs)log(lvl, msg, *args, **kwargs)lvl: 必须是整数 用指定的lvl等级去添加一个日志, 只要这个lvl大于等于20, 就会出发logging.INFO
class logging.FileHandler(filename, mode='a', encoding=None, delay=False)
测试
MemoryHandler继承了BufferingHandler, 可以用来临时记录日志,一旦日志太多(超过了capacity),或者等级太高(达到了flushLevel), 就会记录到(target)
如果需要抛弃刚才的日志,可以调用log.handelrs[0].close()或者log.removeHandler(memory_handler)
class logging.handlers.MemoryHandler(capacity, flushLevel=ERROR, target=None)
- NullHandler
- WatchedFileHadnler
- BaseRotatingHandler
- RotatingFileHandler
- TimedRotatingFileHandler
- SocketHandler
- DatagramHandler
- SysLogHandler
- NTEventLogHandler
- SMTPHandler
- HTTPHandler
- QueueHandler
- QueueListener