def config_log(): fmt = Formatter(fmt='%(asctime)s %(name)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S') io_handler = StreamHandler() io_handler.setLevel(logging.DEBUG) io_handler.setFormatter(fmt) file_handler = FileHandler('edu_logs.log') file_handler.setLevel(logging.WARN) file_handler.setFormatter(fmt) http_handler = HTTPHandler(host='localhost:5000', url='/log', method='POST') http_handler.setLevel(logging.ERROR) http_handler.setFormatter(fmt) # 上传的数据不需要formatter logger.setLevel(logging.DEBUG) logger.addHandler(io_handler) logger.addHandler(file_handler) logger.addHandler(http_handler)
def test_log(self): logger = logging.getLogger() fileHandler = TimedRotatingFileHandler('logs/content.log') fileHandler.setLevel( logging.INFO ) # NOTSET -> DEBUG -> INFO -> WARNING -> ERROR -> FATAL formatter = Formatter('%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S') fileHandler.setFormatter(formatter) iohandler = StreamHandler() iohandler.setLevel(logging.DEBUG) logger.addHandler(fileHandler) logger.addHandler(iohandler) # 将日志上传到日志服务器 # host 服务器的ip和port # url 请求路径,以 / 开始 # method 默认 为GET httpHandler = HTTPHandler(host='127.0.0.1:5000', url='/upload_log', method='POST') httpHandler.setFormatter(formatter) # 只有error 的信息才会上传到日志服务器 httpHandler.setLevel(logging.ERROR) logger.addHandler(httpHandler) logger.setLevel(logging.DEBUG) logger.info('this is a test log python file!') logger.error('this is error msg for python file!') logger.debug('this is dubug msg !') # this msg is hiddern!
class MongoHandler(logging.Handler): def emit(self, record): pass logger = logging.getLogger() fh = logging.FileHandler('logger.log') # 文件输出流的对象 ch = logging.StreamHandler() # 标准输出流,用于输出到控制台 nw = HTTPHandler('localhost:8888', url='/') # 默认以GET方式输出到网页上 formatter = logging.Formatter( fmt='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%Y%m%d %H:%M:%S') logger.setLevel('DEBUG') fh.setFormatter(formatter) ch.setFormatter(formatter) nw.setFormatter(formatter) logger.addHandler(fh) # 输出到文件 logger.addHandler(ch) # 输出到屏幕 logger.addHandler(nw) # GET带参数输出 logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message')
# 创建上传日志请求的处理器HTTPHandler # 上传日志的接口: http://10.35.162.97:5000/log/ # 接口的方法: post # 响应的数据是json handler4 = HTTPHandler(host='10.35.162.97:5000', url='/log/', method='POST') handler4.setLevel(logging.INFO) # 创建格式化对象 , 并添加到处理器 formatter = logging.Formatter('[ <%(asctime)s> %(name)s %(levelname)s ] %(message)s') handler1.setFormatter(formatter) handler2.setFormatter(formatter) handler3.setFormatter(formatter) handler4.setFormatter(formatter) # 无效的,默认情况下将所有的日志信息上传到服务器 # 将处理器添加到日志记录器 logger.addHandler(handler1) logger.addHandler(handler2) # logger.addHandler(handler3) logger.addHandler(handler4) # 任务4: 使用SMTPHandler将记录的日志信息发送到邮箱中 if __name__ == '__main__': logger.info('hi, disen') logger.debug('hi, 190') logger.warning('hi, 110') logger.error('hi, 120') logger.critical('出现了192的数据库无法连接')