logfile = './test.log'
fh = logging.FileHandler(logfile, mode='a')
fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关
formatter = logging.Formatter("%(levelname)s: %(message)s")
fh.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(fh)
logger.debug('111')
logger.info('113')
formatter部分参数
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
logger 和 FileHandler 级别默认都是warning级别的,可以不设
logger和handler的关系可以这样理解(个人理解):logger是控制程序的,handler是控制文件的,logger约束的程序的输出,handler是约束输入到文件夹,对于程序中一个logger,我们可以使用添加不同的handler控制程序向不同日志文件的输出。