1、在settings中添加LOGGING配置
LOG_PATH = BASE_DIR / "logs"
if not os.path.exists(LOG_PATH):
os.mkdir(LOG_PATH)
LOGGING = {
"version": 1,
"disable_existing_loggers": True,
"formatters": {
# 日志格式
"standard": {"format": "%(asctime)s [%(levelname)s] %(filename)s::%(funcName)s:%(lineno)d: %(message)s"},
"simple": {"format": "%(levelname)s %(message)s"}, # 简单格式
},
# 过滤
"filters": {},
# 定义具体处理日志的方式
"handlers": {
# 默认记录所有日志
"default": {
"level": "INFO",
"class": "logging.handlers.RotatingFileHandler",
"filename": LOG_PATH / f'system-{time.strftime("%Y-%m-%d")}.log',
"maxBytes": 1024 * 1024 * 5, # 文件大小
"backupCount": 5, # 备份数
"formatter": "standard", # 输出格式
"encoding": "utf-8", # 设置默认编码,否则打印出来汉字乱码
},
# 输出错误日志
"error": {
"level": "ERROR",
"class": "logging.handlers.RotatingFileHandler",
"filename": LOG_PATH / f'error-{time.strftime("%Y-%m-%d")}.log',
"maxBytes": 1024 * 1024 * 5, # 文件大小
"backupCount": 5, # 备份数
"formatter": "standard", # 输出格式
"encoding": "utf-8", # 设置默认编码
},
# 控制台输出
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "standard",
},
},
# 配置用哪几种 handlers 来处理日志
"loggers": {
# 类型 为 django 处理所有类型的日志, 默认调用
"django": {
"level": "INFO",
"handlers": ["default", "console"],
"propagate": False,
},
# log 调用时需要当作参数传入
"log": {
"level": "INFO",
"handlers": ["error", "console", "default"],
"propagate": True,
},
},
}
2、打印日志
import json
from logging import getLogger
from django.core import serializers
from db import models
logger = getLogger("log")
def get_book():
book= models.Book.objects.filter(book_name='算法')
data=json.loads(serializers.serialize("json", book))
logger.info(data)
if __name__=="__main__":
get_book()