规范目录
使用规范目录结构的好处
- 使项目结构更清晰
- 提高可读性
规范目录结构不是固定的,可以根据时间需求进行添加修改
常见目录如下:
bin 存放执行文件
conf 存放配置文件
core 存放核心业务逻辑
db 存放数据处理相关
lib 存放共代码和第三方模块
log 存放日志文件
readme 是一个文本文件,用于描述应用程序
logging 模块
日志就是记录什么时间反思了什么事情
在程序出现问题的时候,能通过日志找到问题的原因
日志级别
logging.debug() #10
logging.info() #20
logging.warning() #30
logging.error() #40
logging.critical() #50
默认级别为warning
默认输出位置为控制台
自定义配置
日志格式
%(name)s:Logger的名字,并非用户名,详细查看
%(levelno)s:数字形式的日志级别
%(levelname)s:文本形式的日志级别
%(pathname)s:调用日志输出函数的模块的完整路径名,可能没有
%(filename)s:调用日志输出函数的模块的文件名
%(module)s:调用日志输出函数的模块名
%(funcName)s:调用日志输出函数的函数名
%(lineno)d:调用日志输出函数的语句所在的代码行
%(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d:线程ID。可能没有
%(threadName)s:线程名。可能没有
%(process)d:进程ID。可能没有
%(message)s:用户输出的消息
logging中的四个核心角色
logger 生成日志
handler 处理日志
formatter 格式化
日志对象的继承关系
可以将一个日志指定为另一个日志的子日志或子孙日志
当存在继承关系时子孙级日志收到日志时会将该日志向上传递
可以通过propagate来关闭传递
通过字典配置日志模块
每次都要编写代码来配置非常麻烦,我们可以写一个完整的配置保存起来便于以后直接使用