企业网站建设策划书范文,php 如何用op浏览器开发手机网站,大庆加油app下载老版本,广东建数网络科技有限公司日志处理
1.日志级别
级别#xff08;Level#xff09;表示日志消息的优先级#xff0c;从低到高分为以下几个级别#xff1a; DEBUG: 详细的日志信息#xff0c;通常用于调试。 INFO: 一般的信息性消息#xff0c;用于说明程序运行情况。 WARNING: 警告消息#xff0…日志处理
1.日志级别
级别Level表示日志消息的优先级从低到高分为以下几个级别 DEBUG: 详细的日志信息通常用于调试。 INFO: 一般的信息性消息用于说明程序运行情况。 WARNING: 警告消息表明可能出现问题但程序仍然可以继续运行。 ERROR: 错误消息表明出现了一个严重的问题程序可能无法继续正常运行。 CRITICAL: 严重错误消息通常表示程序无法继续执行。 通过设置 level你可以控制只有达到指定级别或更高级别的日志消息才会被处理。 例如如果将 level 设置为 INFO那么所有 INFO、WARNING、ERROR 和 CRITICAL 级别的日志消息都会被处理而 DEBUG 级别的消息将被忽略。 2.propagate消息传播
如果 propagate 被设置为 True那么日志消息将会传递给父级 logger。如果设置为 False则不会传递给父级 logger。见下示例 settings.py
3.Django 内置的 logger django 获取所有日志 django.server 用于记录 Django 开发服务器的日志消息例如 HTTP 请求、响应、静态文件服务等 django.request 处理与请求相关的日志5xx 响应报出 error 日志4xx 报出 warning 日志 django.db.backends 处理与数据库之间交互的日志 django.security.* 处理与安全相关的日志 django.db.backends.schemea 处理数据库迁移时的日志 import logging
获取Django内置的logger
logger logging.getLogger(django)
记录不同级别的日志消息
logger.debug(This is a debug message)
logger.info(This is an info message)
logger.warning(This is a warning message)
logger.error(This is an error message)
logger.critical(This is a critical message)settings.py:
LOG_PATH BASE_DIR / logsif not os.path.exists(LOG_PATH):os.mkdir(LOG_PATH)# 日志配置
LOGGING {version: 1,disable_existing_loggers: False, # 为True表示会打印Django源码中内置的日志formatters: { # 定义日志的显示格式# 日志格式standard: {format: %(asctime)s [%(levelname)s] %(filename)s::%(funcName)s:%(lineno)d: %(message)s},simple: {format: %(levelname)s %(message)s}, # 简单格式},# 过滤filters: {},# 配置用哪几种 handlers 来处理日志handlers: {request: {level: INFO, # level表示只有达到指定级别或更高级别的日志消息才会被处理。class: logging.handlers.RotatingFileHandler,filename: LOG_PATH / frequest-{time.strftime(%Y-%m-%d)}.log, # 日志文件名包含日期maxBytes: 1024 * 1024 * 5, # 单个日志文件大小为 5 MBbackupCount: 5, # 最多保留 5 个备份文件formatter: simple, # 使用 simple 格式化器encoding: utf-8, # 设置默认编码},db: {level: DEBUG,class: logging.handlers.RotatingFileHandler,filename: LOG_PATH / fdb-{time.strftime(%Y-%m-%d)}.log,maxBytes: 1024 * 1024 * 5, # 文件大小backupCount: 5, # 备份数formatter: simple, # 输出格式encoding: utf-8, # 设置默认编码},file: {level: ERROR,class: logging.handlers.RotatingFileHandler,filename: LOG_PATH / ffile-{time.strftime(%Y-%m-%d)}.log,maxBytes: 1024 * 1024 * 5, # 文件大小backupCount: 5, # 备份数formatter: simple, # 输出格式encoding: utf-8, # 设置默认编码},# 控制台输出console: {level: DEBUG,class: logging.StreamHandler,formatter: standard,},},# 定义具体处理日志的方式loggers: {root: {level: ERROR, # level表示只有达到指定级别或更高级别的日志消息才会被处理。handlers: [file], # handlers可以写多个},django: {level: INFO,handlers: [request],propagate: True,},# django.request一般处理warning及更高级别的日志# 好像没有上面django的时候才会处理一般的请求debug或者infodjango.request: {level: DEBUG,handlers: [console],propagate: False,},# 对于django.db.backends 如果propagateTrue会传递到上一级django.db# 如果django.db中propagateTrue还会再传递到django依次类推会传递到最高级root中...django.db: {level: DEBUG,handlers: [console],propagate: True,},django.db.backends: {level: DEBUG,handlers: [db],propagate: True,},},
}View.py:
import logginglogger logging.getLogger(django)class BookListAPIView(APIView):# 局部认证# authentication_classes [JWTAuthentication]def get(self, request):logger.info(打印info级别的日志)logger.error(打印error级别的日志)book BookInfo.objects.all()serializer BookModelSerializer(instancebook, manyTrue)return Response(serializer.data)