pursue wind pursue wind
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
  • 基于Python轻松自建App服务器

    • 0App 与后端服务器通信方法简介
    • 1本小册要完成的通信场景功能
    • 2服务器端组件框架的选择与介绍
    • 3基于腾讯云的服务器端环境搭建
    • 4基于 Tornado 的 HTTP 服务器简介及代码组织框架
    • 5第一次数据请求 1:服务器接收用户注册信息
    • 6第一次数据请求 2:为用户处理模块增加 log 管理
      • 代码下载
      • 小结
    • 7第一次数据请求 3:将用户信息写入 MySQL 数据库
    • 8服务器接收客户端图片上传,并保存在硬盘中
    • 9服务器接收客户端请求,并返回 H5 页面
    • 10搭建基于 Nginx 的代理服务器
    • 11基于 HTTPS 的数据加密
    • 12大型 HTTP 服务器架构演进路线及思路
    • 13总结
  • 基于Python实现微信公众号爬虫

  • Xpath
  • python3 翻译
  • python3循环创建数据库表
  • python实用30个小技巧
  • pywin32
  • Python
  • 基于Python轻松自建App服务器
pursuewind
2020-11-23
目录

6第一次数据请求 2:为用户处理模块增加 log 管理

# 为用户处理模块增加 log 管理

作为一个程序员,log 管理几乎是必备技能,本小节将在原来代码的基础上,增加 log 管理,以方便调试。进入 log 目录,并创建 users 目录。

进入 users_views.py,导入 logging 模块,并指定 log 目录文件(log/users/users.log),指定 log 级别(DEBUG)和 log 保留方式(这里设定按天保存,保留 30 天的 log 记录),并在处理方法中加入对应的 log 信息。

users_views.py 的完整代码如下:

#! /usr/bin/python3
# -*- coding:utf-8 -*-

import tornado.web
from tornado.escape import json_decode
import logging
from logging.handlers import TimedRotatingFileHandler

#从commons中导入http_response方法
from common.commons import (
    http_response,
)

#从配置文件中导入错误码
from conf.base import (
    ERROR_CODE,
)
 

########## Configure logging #############
logFilePath = "log/users/users.log"
logger = logging.getLogger("Users")  
logger.setLevel(logging.DEBUG)  
handler = TimedRotatingFileHandler(logFilePath,  
                                   when="D",  
                                   interval=1,  
                                   backupCount=30)  
formatter = logging.Formatter('%(asctime)s \
%(filename)s[line:%(lineno)d] %(levelname)s %(message)s',)  
handler.suffix = "%Y%m%d"
handler.setFormatter(formatter)
logger.addHandler(handler)
 
 
class RegistHandle(tornado.web.RequestHandler):
    """handle /user/regist request
    :param phone: users sign up phone
    :param password: users sign up password
    :param code: users sign up code, must six digital code
    """
        
    def post(self):
        try:
            #获取入参
            args = json_decode(self.request.body)
            phone = args['phone']
            password = args['password']
            verify_code = args['code']
        except:
            #获取入参失败时,抛出错误码及错误信息
            logger.info("RegistHandle: request argument incorrect")
            http_response(self, ERROR_CODE['1001'], 1001)
            return 
            
        #处理成功后,返回成功码“0”及成功信息“ok”
        logger.debug("RegistHandle: regist successfully")
        http_response(self, ERROR_CODE['0'], 0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

再次执行 main.py

HTTP 客户端发起正确的注册请求

查看 log/users/users.log

在日志文件中,日志的格式包含时间、文件名、打印代码行数、log 级别和自定义 log 信息。这些信息足以满足问题定位及排错。在前面的配置信息中,我们定义的 log 级别是 DEBUG,下面看看入参出错时,报的 INFO 日志。

查看 log/users/users.log

这里看到日志文件中多出了一行日志,级别为 INFO。前面我们也提到,我们定义了日志文件的记录保留,本小册由于是新建讲解项目,还无法直接查看日志保留记录。这里贴出之前项目的记录,可以看到历史保留文件是以天为后缀的,当天的文件还是在 users.log 中。

# 代码下载

到目前为止,服务器端代码如下:
demo7 (opens new window)

# 小结

本小节简单介绍了日志服务在服务器端开发中的应用,开发者可以自定义 log 级别及其历史保留记录。开发者可以根据自己的喜好及习惯,去定义具体的级别和信息。下一小节,我们将讲解如何利用 ORM 的方式和数据库打交道,并将用户注册信息写入数据库中。

Last Updated: 2023/02/14, 18:02:00
5第一次数据请求 1:服务器接收用户注册信息
7第一次数据请求 3:将用户信息写入 MySQL 数据库

← 5第一次数据请求 1:服务器接收用户注册信息 7第一次数据请求 3:将用户信息写入 MySQL 数据库→

Theme by Vdoing | Copyright © 2019-2023 pursue-wind | 粤ICP备2022093130号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜
  • 网络DJ