本文共 1764 字,大约阅读时间需要 5 分钟。
导入模块:
import loggingimport osimport sysBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
basicConfig定义日志格式:
# format 控制输出日志的格式,levelname和message是固定写法,levelname是等级名称,message是输出字符,level控制输出的等级logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)# 注意:每个文件的日志格式只能配置一次,即一个py文件里只能出现一次,而且只允许放在执行语句之前。word = 'Hello, world!'# 字符串的格式输出,%s引用word字符串logging.warning('%s I love python!', word)# asctime是当前时间,默认level是logging.warninglogging.basicConfig(format='%(asctime)s %(message)s')# lineno代表代码行数logging.basicConfig(level=logging.DEBUG, format='%(lineno)d - %(filename)s - %(asctime)s - %(name)s - %(levelname)s - %(message)s')
def log_log(logger_name='LOG-LOG', log_file=os.path.join(BASE_DIR, 'log', 'log.log'), level=logging.DEBUG): '生成指定日志格式的日志对象' # 日志对象,需要个日志名儿 logger = logging.getLogger(logger_name) logger.setLevel(level) # 控制台对象 ch = logging.StreamHandler() ch.setLevel(level) # 文件对象 fh = logging.FileHandler(filename=log_file, encoding='utf-8') # 创建 formatter formatter = logging.Formatter('%(asctime)s %(filename)s [line:%(lineno)d] %(name)s %(levelname)s %(message)s') # 添加 formatter ch.setFormatter(formatter) fh.setFormatter(formatter) # 把 ch, fh 添加到 logger logger.addHandler(ch) logger.addHandler(fh) return logger
def main(): # 测试 logger = log_log() logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message')if __name__ == '__main__': main()
# 禁止所有日志输出logging.disable(logging.CRITICAL)
是不是很简单!
本代码来源于51CTO课程:python全栈开发高薪就业班
转载于:https://blog.51cto.com/14265713/2405801