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