zoukankan      html  css  js  c++  java
  • django 加日志

    qqqq

    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:pythonmyormlog',
                'maxBytes': 1024 * 1024 * 5,  # 5 MB
                'backupCount': 100,
                'formatter': 'detail',
            },
    
            'web_file': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                # 日志的位置
                'filename': r'F:pythonmyormwebweb.log',
                'maxBytes': 1024 * 1024 * 5,  # 5 MB
                'backupCount': 100,
                'formatter': 'detail',
            },
            'rbac_file': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                # 日志的位置
                'filename': r'F:pythonmyorm
    bac
    bac.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的使用方法,现在可以结合前面的例子使用。







  • 相关阅读:
    如何做实时监控?—— 参考 Spring Boot 实现
    如何做实时监控?—— 参考 Spring Boot 实现
    spring boot application properties配置详解
    Jrebel 6.2.1破解
    智能社-JS -wiki
    hibernate.properties
    Tomcat 的 socket bind failed的解决方法
    js 排序 SORT 各种方法
    java EE 如何使用Eclipse启动一个项目
    2016-06-06 数组的几个重要方法
  • 原文地址:https://www.cnblogs.com/lulin9501/p/11086952.html
Copyright © 2011-2022 走看看