logging日志实操入门

一、代码

import logging
from logging.handlers import RotatingFileHandler
# 配置日志
log_file_path = './logs/test.log'
file_handler = RotatingFileHandler(log_file_path, maxBytes=10, backupCount=5)

# 设置格式化器,以使日志更易读
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 获取根日志记录器并设置级别
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# 添加文件处理器到根日志记录器
logger.addHandler(file_handler)

# 添加控制台处理器
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)

for i in range(100):
    logger.warning(f"Attempt {i} failed")

1、RotatingFileHandler()

`RotatingFileHandler` 实例,用于管理日志文件的轮换。
1. `file_handler = RotatingFileHandler(...)`:
   创建一个 RotatingFileHandler 对象并将其赋值给 `file_handler` 变量。
2. `log_file_path`:
   这是日志文件的路径。它应该是一个字符串,指定日志文件的位置和名称,例如 "/path/to/your/app.log"。
3. `maxBytes=10*1024*1024`:
   - 这设置了单个日志文件的最大大小。
   - `10*1024*1024` 计算结果是 10,485,760 字节,也就是 10 MB。
   - 当日志文件达到这个大小时,它将被轮换。
4. `backupCount=5`:
   - 这指定了要保留的备份日志文件的数量。
   - 在这个配置中,系统将保留 5 个旧的日志文件,加上当前的活动日志文件。

二、功能

1、test.log的日志文件被保存在特定目录下

2、日志会在console显示

三、结果

1、console端

2、文件

<think>嗯,用户想了解如何入门数据库学习,我得仔细考虑该怎么组织回答。首先,用户可能是完全没有数据库基础的新手,可能需要从基础概念开始。我应该先介绍数据库的基本概念,比如什么是数据库,它的作用是什么,然后逐步深入到具体的内容。 接下来,需要确定学习路径。可能分为几个阶段:基础阶段、进阶阶段、践阶段和深入学习阶段。每个阶段要列出关键知识点,比如基础阶段要学SQL、数据模型,进阶阶段学索引、事务,践阶段做项目,深入学习阶段了解分布式数据库等。 然后,用户可能想知道推荐的学习资源,比如书籍、在线课程和工具。这里要推荐一些经典的书籍,比如《SQL必知必会》,还有在线平台如LeetCode和Coursera的课程。工具方面,MySQL和PostgreSQL是比较好的选择,还有可视化工具如DBeaver。 另外,学习建议也很重要。比如强调动手践的重要性,如何通过项目巩固知识,参与开源项目或者社区讨论。还要提醒用户保持持续学习,关注新技术发展。 可能用户没有明确说明自己的背景,但作为入门者,应该避免使用过于专业的术语,用通俗易懂的语言解释概念。同时,要确保回答结构清晰,分点列出,方便用户逐步跟进。需要检查是否有遗漏的重要知识点,比如数据库设计范式、ACID属性,这些在进阶阶段是必须掌握的。 最后,要确认推荐资源的可用性和适用性,确保书籍和课程是当前比较流行和评价好的,工具也要是广泛使用且有社区支持的。同时,提醒用户学习过程中遇到问题如何寻求帮助,比如Stack Overflow和论坛。 总结下来,回答的结构应该先介绍数据库的重要性,然后分阶段讲解学习内容,推荐资源,给出学习建议,并鼓励践和持续学习。这样用户能有一个明确的路线图,逐步入门数据库领域。</think>### 数据库学习入门指南(分阶段详解) #### 一、基础阶段:建立核心概念 1. **数据库基本概念** - **定义**:数据库是结构化数据集合,通过数据库管理系统(DBMS)进行管理 - **常见类型**: - 关系型数据库:MySQL、PostgreSQL、Oracle - 非关系型数据库:MongoDB、Redis、Cassandra - **核心组件**:表、字段、记录、索引、事务 2. **SQL语言基础** - **数据定义语言(DDL)**: ```sql CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); ``` - **数据作语言(DML)**: ```sql INSERT INTO students VALUES (1, '张三', 20); SELECT * FROM students WHERE age > 18; ``` - **推荐练习平台**:SQLZoo、LeetCode数据库题库 3. **数据建模基础** - **ER图**:体-关系模型设计 - **规范化理论**:1NF/2NF/3NF范式 #### 二、进阶阶段:掌握关键技术 1. **索引机制** - B+树索引结构 - 索引优化原则:最左前缀匹配 - 执行计划分析:`EXPLAIN`命令 2. **事务管理** - **ACID特性**: - 原子性(Atomicity) - 一致性(Consistency) - 隔离性(Isolation) - 持久性(Durability) - 隔离级别:读未提交 → 读已提交 → 可重复读 → 串行化 3. **存储引擎对比** - InnoDB vs MyISAM(MySQL) - WAL(Write-Ahead Logging)机制 #### 三、践阶段:项目驱动学习 1. **典型场景实战** - 电商系统:商品库存管理 - 博客系统:用户-文章-评论关系 - 推荐系统:用户行为数据存储 2. **性能优化践** ```sql -- 慢查询优化示例 CREATE INDEX idx_age ON students(age); SELECT name FROM students USE INDEX(idx_age) WHERE age BETWEEN 18 AND 25; ``` 3. **备份与恢复** - mysqldump工具使用 - binlog日志解析 #### 四、学习资源推荐 1. **经典教材**: - 《数据库系统概念》(原书第7版) - 《高性能MySQL》(第4版) 2. **在线课程**: - Coursera:Stanford《数据库导论》 - 极客时间:MySQL实战45讲 3. **工具集合**: - 本地环境:Docker + MySQL 8.0 - 可视化工具:DBeaver、Navicat - 压力测试:sysbench #### 五、学习路线建议 1. **时间规划**(参考): - 第1-2周:SQL基础 + 简单CRUD - 第3-4周:索引优化 + 事务践 - 第5-6周:设计复杂表结构 + 项目实战 2. **常见误区提醒**: - 避免过早追求分库分表 - 不要忽视基础理论直接 - 警惕N+1查询问题 #### 六、扩展方向 1. **分布式数据库**: - TiDB架构解析 - 一致性协议:Raft vs Paxos 2. **云数据库服务**: - AWS RDS - 阿里云PolarDB 3. **时序数据库**: - InfluxDB - TimescaleDB **关键学习原则**:理论→践→调优循环,每个阶段完成至少1个完整项目。建议从MySQL入手,掌握后再横向扩展其他数据库类型。遇到问题时,善用官方文档和Stack Overflow社区资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值