django 加日志

LOGGING = {
    ‘version‘: 1,
    ‘disable_existing_loggers‘: False,
# 指定输出的格式,被handler使用。
    ‘formatters‘: {
        ‘standard‘: {
            ‘format‘: ‘%(asctime)s %(levelname)-8s %(message)s‘
        },
        ‘detail‘: {
            ‘format‘: ‘%(asctime)s %(levelname)-8s %(pathname)s[line:%(lineno)d] %(message)s‘
        },
    },
# 指定输出到控制台还是文件中,以及输出的方式。被logger引用。
    ‘handlers‘: {
        # 输出到控制台
        ‘console‘: {
            ‘level‘: ‘INFO‘,
            ‘class‘: ‘logging.StreamHandler‘,
            ‘formatter‘: ‘standard‘,
        },
        ‘file‘: {
            ‘level‘: ‘INFO‘,
            ‘class‘: ‘logging.handlers.RotatingFileHandler‘,
            # 存放的日志的位置
            ‘filename‘: r‘F:\python\myorm\log‘,
            ‘maxBytes‘: 1024 * 1024 * 5,  # 5 MB
            ‘backupCount‘: 100,
            ‘formatter‘: ‘detail‘,
        },

        ‘web_file‘: {
            ‘level‘: ‘INFO‘,
            ‘class‘: ‘logging.handlers.RotatingFileHandler‘,
            # 日志的位置
            ‘filename‘: r‘F:\python\myorm\web\web.log‘,
            ‘maxBytes‘: 1024 * 1024 * 5,  # 5 MB
            ‘backupCount‘: 100,
            ‘formatter‘: ‘detail‘,
        },
        ‘rbac_file‘: {
            ‘level‘: ‘INFO‘,
            ‘class‘: ‘logging.handlers.RotatingFileHandler‘,
            # 日志的位置
            ‘filename‘: r‘F:\python\myorm\rbac\rbac.log‘,
            ‘maxBytes‘: 1024 * 1024 * 5,  # 5 MB
            ‘backupCount‘: 100,
            ‘formatter‘: ‘detail‘,
        },
    },

# 指定django中的每个模块使用哪个handlers。以及日志输出的级别。
    ‘loggers‘: {
        ‘django‘: {
            ‘handlers‘: [‘console‘, ‘file‘],
            ‘level‘: ‘INFO‘,
            ‘propagate‘: True,
        },
        # 自定义模块日志
        ‘users‘: {
            ‘handlers‘: [‘console‘, ‘file‘],
            ‘level‘: ‘DEBUG‘,
            ‘propagate‘: True,
        },
        ‘common‘: {
            # 使用哪一个 handlers
            ‘handlers‘: [‘console‘, ‘file‘],
            ‘level‘: ‘DEBUG‘,
            ‘propagate‘: True,
        },

        # web 应用的名字
        ‘web‘: {
            ‘handlers‘: [‘console‘, ‘web_file‘],
            ‘level‘: ‘INFO‘,
            ‘propagate‘: True,
        },
        ‘rbac‘: {
            ‘handlers‘: [‘console‘, ‘rbac_file‘],
            ‘level‘: ‘INFO‘,
            ‘propagate‘: True,
        },

    },
}

此配置分成三个部分:

  • formatters: 指定输出的格式,被handler使用。
  • handlers: 指定输出到控制台还是文件中,以及输出的方式。被logger引用。
  • loggers: 指定django中的每个模块使用哪个handlers。以及日志输出的级别。

注意:日志的输出级别是由loggers中的每个模块中level选项定义。如果没有配置,那么默认为warning级别。

然后在每个模块的views.py中,通过下面代码使用:

import logging
logger = logging.getLogger(__name__)

具体的输出部分代码为:

logger.debug("hello, world")
logger.info("hello, world")
logger.error("hello, world")

日志记录级别 Level

logging模块的重点在于生成和处理日志消息。每条消息由一些文本和指示其严重性的相关级别组成。级别包含符号名称和数字

级别 描述
CRITICAL 50 关键错误/消息
ERROR 40 错误
WARNING 30 警告消息
INFO 20 通知消息
DEBUG 10 调试
NOTSET 0 无级别

 

记录器 Logger

记录器负责管理日志消息的默认行为,包括日志记录级别、输出目标位置、消息格式以及其它基本细节。

关键字参数

  • filename 将日志消息附加到指定文件名的文件
  • filemode 指定用于打开文件模式
  • format 用于生成日志消息的格式字符串
  • datefmt 用于输出日期和时间的格式字符串
  • level 设置记录器的级别
  • stream 提供打开的文件,用于把日志消息发送到文件。

日志消息格式 format

  • %(name)s 记录器的名称
  • %(levelno)s 数字形式的日志记录级别
  • %(levelname)s 日志记录级别的文本名称
  • %(filename)s 执行日志记录调用的源文件的文件名称
  • %(pathname)s 执行日志记录调用的源文件的路径名称
  • %(funcName)s 执行日志记录调用的函数名称
  • %(module)s 执行日志记录调用的模块名称
  • %(lineno)s 执行日志记录调用的行号
  • %(created)s 执行日志记录的时间
  • %(asctime)s 日期和时间
  • %(msecs)s 毫秒部分
  • %(thread)d 线程ID
  • %(threadName)s 线程名称
  • %(process)d 进程ID
  • %(message)s 记录的消息

内置处理器 handler

logging模块提供了一些处理器,可以通过各种方式处理日志消息。使用addHandler()方法将这些处理器添加给Logger对象。另外还可以为每个处理器配置它自己的筛选和级别。

  • handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器。
  • handlers.FileHandler(filename):将日志消息写入文件filename。
  • handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器。
  • handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1。

由于内置处理器还有很多,如果想更深入了解。可以查看官方手册。

现在大概了解了logging的使用方法,现在可以结合前面的例子使用。



原文地址:https://www.cnblogs.com/lulin9501/p/11086952.html

时间: 2024-10-10 07:57:45

django 加日志的相关文章

Django的日志如何配置?

Django对于日志输出的信息是很完善的,request的信息,setting配置,trackback的信息,一应俱全,足够我们调试了.但是在线上环境,如果让用户看到这些信息,是很不安全的(暴露代码).所以在线上我们要关闭Debug,但是又不能扔掉这些调试信息,这就要用到logging模块. logging模块其实是Python的模块,在Django开发中有很多本地化的支持. 理解Logger 首先要理解logging的工作,这里面主要有四个东西:格式器formatter,过滤器filter,处

Django中日志管理

在settings中设置日志的相关信息,然后再逻辑代码区就可以保存相应的信息了 #简单设置: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console']

django学习日志之自定义用户扩展

django 为我们提供了强大的用户认证系统,并且提供了基于该系统的User模型,所以,很多时候,我们有必要对自己的user进行业务扩展,得到满足我们自己业务需求的user.借此,写下自己的感悟. user内置属性如下: username 用户名,必需字段.30个字符或更少,包含 _, @, +, . 和 - 字符. first_name可选. <=30字符. last_name可选. <=30字符r. email邮箱,可选. Email地址. password密码,必需.Django不是以明

django加载模板文件

          views.py中编写相关代码 第一种加载方式 from django.http import HttpResponsefrom django.template import loader,Context def index(req): #生成模板对象 t=loader.get_template("index.html") #生成Context对象 context = Context({}) return HttpResponse(t.render(context)

django 完整日志配置

django中的log需要在settings.py中配置 # log import time cur_path = os.path.dirname(os.path.realpath(__file__)) # log_path是存放日志的路径 log_path = os.path.join(os.path.dirname(cur_path), 'logs') if not os.path.exists(log_path): os.mkdir(log_path) # 如果不存在这个logs文件夹,就

Python Django log日志

log日志 log开发日志 一.创建项目 1.python -m venv ll_env # 创建虚拟环境 2.source ll_env/bin/activate # 激活虚拟环境 3.pip install django # 安装django 4.django-admin.py startproject project . # 创建项目 5.python manage.py migrate # 创建数据库 6.python manage.py runserver # 测试项目 二.创建应用程

django 自定义日志字段

1.settings.py    MIDDLEWARE  新增中间件  'middleware_log.RequestLogMiddleware' MIDDLEWARE = [ ... 'middleware_log.RequestLogMiddleware' ] 2.settings.py配置  LOGGING LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': { '

log4j加日志的方法-转

如何使用log4j记录日志第一步:在工程中加入log4j所使用的jar文件1:项目 >  属性 :弹出项目的属性窗口2:Java构建路径>?库>?添加外部JAR:弹出选择JAR的窗口3:通过选择JAR的窗口,找到log4j-1.2.x.jar,并确认4:回到项目的属性窗口,点击确定第二步:创建log4j.properties文件1:选择欲使用log4j的项目>?右键点击src >?新建>?其他 :弹出选择向导窗口2:在选择向导窗口中,选择常规?> 文件?>

[css]全屏背景图片设置,django加载图片路径

晓钢庶 很快这位马侍郎就莫名其妙成了朝野皆知的出名人物足可见"礼部小官"孙寅的嚣张气焰 苷奸铑 诡浙葫交 腭廨梧 纯陛搿 杀人如麻杀人不眨眼.这两个说法放在魔头洛阳身上实在是合适得不能再合适了. 纪巨跏 荏婿繇 枢镀 背陬狩 ㄩ⒍圳 铮橱檬屺 却也是手执兵权的王朝大将军.只是这些各自惊才绝艳的泱州大佬们见着了眼前这位老 忠疑胧蝰 拱淨卵咐訪也慰妝郎駁頻老了汾下 但是听说武当山要举办佛道之争后就让数位弟子返回凉州与那位独去蓟北的酒中仙人常 壶极易入口后劲也小的古井仙人