Django实战-日志

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

Django使用python自带的 logging 作为日志打印工具。logging 是线程安全,其主要由4部分组成:

  • Formatters

控制日志的格式

  • Filters

控制哪些日志可以从 logger 流向 Handler

  • Handlers

控制日志输出到哪里,console,file…

一个 logger 可以有多个Handler

  • Loggers

用户使用的直接接口,将日志传递给Handler

一、settings.py 配置

设置 log 文件,如果不存在就新建 log 文件夹

LOG_DIR = os.path.join(BASE_DIR, "log")
if not os.path.exists(LOG_DIR):
    os.makedirs(LOG_DIR)
LOGGING = {
    # version为 1 ,定义了配置文件的版本,当前版本号为1.0 
    "version": 1.0,
    # 日志格式 % s 字符串,格式器
    "formatters": {
        # 详细的日志格式
        "standard": {
            "format": "%(asctime)s [%(threadName)s: %(thread)d]"
                        "%(pathname)s:%(funcName)s:%(lineno)d %(levelname)s - %(message)s"
        },
        # 简单的日志格式
        "simple": {
            "format": "%(asctime)s %(message)s"
        }
    },
    "filters": {
        # 配置过滤器的名字
        "test": {
            "()": "ops.TestFilter",
        }
    },
    # 格式器
    "handlers": {
        # 终端处理器
        "console_handler": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "standard"
        },
        # 文件处理器 RotatingFileHandler 循环文件处理器
        "file_handler": {
            "level": "DEBUG",
            "class": "logging.handlers.RotatingFileHandler",
            # 指定路径的名字
            "filename": os.path.join(LOG_DIR, "backend.log"),
            "maxBytes": 1024*1024*1024,
            # 保存的备份数量
            "backupCount": 5,
            "formatter": "standard",
            "encoding": "utf8"
        },
        # 统计,产生文件
        "statistics_handler": {
            "level": "DEBUG",
            "class": "logging.handlers.RotatingFileHandler",
            # 指定路径的名字
            "filename": os.path.join(LOG_DIR, "statistics.log"),
            "maxBytes": 1024*1024*5,
            # 保存的备份数量
            "backupCount": 5,
            "formatter": "simple",
            "encoding": "utf8"
        }
    },
    "loggers": {
        # 日志的名字
        "django": {
            "handlers": ["console_handler", "file_handler"],
            "filters": ['test'],
            "level": "DEBUG"
        },
        "statistics": {
            "handlers": ["statistics_handler"],
            "level": "DEBUG"
        }
    }
}

本文分享自微信公众号 - 数据云团(SmartData)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DevOps时代的专栏

使用 Jenkins Blue Ocean 构建 Android 项目

Blue Ocean 是 Jenkins 推出的一套新的 UI,对比经典 UI 更具有现代化气息。2017 年 4 月 James Dumay 在博客上正式推出...

18120
来自专栏chenchenchen

Java基础流程图

Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;

17520
来自专栏CDA数据分析师

给中级Python开发者的13个练手项目,适合你不?

该项目设计的主要目标是聚合内容。首先,我们需要知道内容聚合器从哪些站点获取内容。然后,使用请求库来发送 HTTP 请求,并使用 BeautifulSoup 解析...

10620
来自专栏DotNet Core圈圈

ASP.NET Core[源码分析篇] - Authentication认证

  首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务,这里通过JWT的认证方式讲解

37210
来自专栏BAT的乌托邦

【小家Spring】Spring异步处理@Async的使用以及原理、源码分析(@EnableAsync)

在开发过程中,我们会遇到很多使用线程池的业务场景,例如异步短信通知、异步记录操作日志。大多数使用线程池的场景,就是会将一些可以进行异步操作的业务放在线程池中去完...

40920
来自专栏BAT的乌托邦

【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping

曾几何时,Apache旗下的项目: struts框架一度是MVC设计模式的主流框架。但后来随着Spring MVC3.0的发力,让它可议支持使用注解的方式进行快...

71110
来自专栏PHP专享栏

手机号码校验系统流程

号码认证的系统交互流程主要分为三个步骤: 第一步,初始化 第二步,获取认证参数 第三步,发起认证

14070
来自专栏BAT的乌托邦

【小家Spring】Spring MVC容器的web九大组件之---HandlerMapping源码详解(一)---BeanNameUrlHandlerMapping系列

在这篇文章里: 【小家Spring】Spring MVC容器启动时,web九大组件初始化详解(Spring MVC的运行机制) 已经大概介绍过web九大组件...

16720
来自专栏BAT的乌托邦

【小家Spring】Spring MVC容器的web九大组件之---HandlerMapping源码详解(二)---RequestMappingHandlerMapping系列

上篇博客: 【小家Spring】Spring MVC容器的web九大组件之—HandlerMapping源码详解(一)—BeanNameUrlHandlerM...

14220
来自专栏阿策小和尚

【Flutter 专题】59 图解 Android Native 获取 Flutter 资源文件

和尚前段时间研究了 Android Native 与 Flutter 之间的交互;若两端均需要相同资源文件,若不能共享则势必会增加整体包大小;今天...

12120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励