Commit 7b85f224 authored by 柯阳's avatar 柯阳

log req added

parent eccfa30a
# 后端日志规范
## 版本修订
1. **2015-10-14** 创建
## 适用范围
所有运行着的线上django服务的业务日志,包括但不限于`gaia`, `backend`, `ship`, `flag-ship`, `ascle`。并希望之后所有的服务的业务日志统一遵守这一规范。
## 日志路径和文件名
原始日志应存放于`/data/log/${SRV_NAME}/`文件夹下,其中`${SRV_NAME}`为服务名。可以根据需求拆分子文件夹。
目前对原始日志的文件名没有要求。
## 日志编码
业务日志以`JSON`作为编码。一行一个`JSON object`,以换行符`\n`分隔开。
## 日志示例
{"SYS": {"action": "/api/topic/create", "log_host": "10.127.158.29", "cl_id": "861342028123987123", "session_id": "cx123nfglxkdzlfjadwrsdnvsd34z", "cl_type": "ios", "cl_ver": "5.2.1", "channel": "mingxingyichu"}, "LEVEL": "INFO", "APP": {"minami": "kotori", "hello": "world"}, "TIMER": {"total": 123.456, "get_user_from_context": 78.9}, "LOGID": "", "TIME": "2015-10-14T17:13:20+08:00"}
## 日志字段
所有日志字段的key要求只能使用以下字符`0-9`, `a-z`, `A-Z`, `-``_`
1. 必打字段
所有日志必须包含以下字段
* `LEVEL`: 日志等级。`DEBUG`, `INFO`, `WARNING`, `ERROR`等。
* `LOGID`: trace用,暂时空缺,填空字符串。
* `TIME`: 日志记录时间。使用[ISO8601标准](https://en.wikipedia.org/wiki/ISO_8601),要求包含时区`+08:00`。根据需要决定是否精确到毫秒。完整例子如`2015-10-14T17:13:00+08:00`。
2. `SYS`字段
`SYS`字段包含一些全局性的或系统级别的信息,只要有就必须打。包含以下子字段
* `action`: 请求的URL(去掉GET参数)。
* `cl_type`: 请求来源端类型,`ios`/`android`/`pc`/`m`。
* `cl_ver`: 客户端版本号,`pc`不需要填写,m站除了native内嵌h5外不需要填写。
* `cl_id`: 设备标识,android取`device_id`,ios取`idfa`。
* `channel`: 请求渠道,客户端取包名即`channel`字段。pc和m站需要具体分析,暂不填写。
* `session_id`: 用户登陆后必须填写。否则不填写。
* `log_host`: 打印该日志所在机器的内网IP。
3. `APP`字段
`APP`字段包含一些业务性的信息,通常用于统计使用。例如下订单操作的订单金额,发私信的收信用户id等。部分字段经讨论若存在普适性可能考虑迁移至`SYS`部分。
4. `TIMER`字段
`TIMER`字段包括所有的请求耗时信息,值以毫秒为单位。必须包括`total`子字段:
* `total`: 该请求总耗时。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment