规范目录结构
规范目录结构
使用规范目录结构的好处
1.使项目结构更清晰
2.提高可读性
规范目录结构是不固定的,可以根据实际需求进行添加修改
常见目录如下:
bin 存放执行文件
conf 存放配置文件
core 存放核心业务逻辑
db 存放数据处理相关
lib 存放公共代码,和第三方模块
log 存放日志文件
readme 是一个文本文件,用于描述应用程序
__file__ 是获得当前执行文件的完整路径
如果你的执行文件不再最外层,那么需要手动将要访问的模块路径加入到sys.path,以下写法是固定的
import os
# os.path.dirname 是获取该路径的上一层路径
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
import sys
sys.path.append(BASE_DIR)
日志模块
什么是日志
就像生活中的日记,用于记录什么时间发生了什么事情
为什么要记日志
就是为了以后程序出现问题的时候,能通过日志来找到问题的原因
怎么记日志
可以自己实现
当然有功能更强大的logging模块
import logging
#最基本的用法
logging.debug('debug')
logging.info('info')
logging.error('error')
logging.critical('critical')
logging.warning('warning')
logging模块将日志分为了五种级别
为什么要分级别
是为了在后期查看日志的时候方便定位
logging的默认显示级别是warning,低于warning的级别都不会显示
默认输出位置是终端
默认的输出格式 WARNING(级别):root(日志生成器的名字):warning(输出的日志消息)
修改默认行为
日志模块中的四种角色
1.logger 日志生成器 生成一条日志
2.filter 日志的过滤器 对logger生成的日志进行过滤
3.formatter 处理格式的 设置日志的输出格式
4.handler 处理器 最终负责将日志输出到指定的位置
自定义日志生成器
可以为生成器指定名字,因为可以存在多个生成器
logger = logging.getLogger("logger1")
设置日志级别
logging模块内部使用整数区分级别
此处可以直接写对应整数,但是建议写常量
logger.setLevel(logging.WARNING)
例如:
logger.warning('警告信息')
创建一个处理器
例如:
handler = logging.FileHandler(‘test.log’,'a',encoding='utf-8')
fm = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - %(message)s')
handler.setFormatter(fm)
将handler与生成器绑定
可以为一个生成器指定多个处理器
logger.addHandler(handler)
logger.error('这是一个错误信息...')
import logging
1.获取生成器
logger = logging.getLogger('mylogger')
logger.setLevel(10)
2.格式处理器
fmt = logging.Formatter('%(levelname)s %(asctime)s %(message)s')
3.创建handler处理器
handler = logging.FileHandler('test2.log','a',encoding='utf-8')
可以绑定多个handler
handler2 = logging.StreamHandler()
4.将handler与格式处理器绑定
handler.setFormatter(fmt)
5.把handler生成器绑定
logger.addHandler(handler)


浙公网安备 33010602011771号