django的日志logging使用与解析

settings.py

import logging
import django.utils.log
import logging.handlers

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'
        },
    },
#formatters表示输出的形式,asctime是输出的时间,默认这是形式‘2003-07-08 16:49:45,896’(逗号后面的数字是时间的毫秒部分)。
#levelnam消息的文本日志记录级别('DEBUG', 'INFO', 'WARNING','ERROR', 'CRITICAL').
#name用于记录调用的记录器的名称。
#threadname线程名称(如果可用)threadd线程ID(如果可用)
#lineno发出日志记录调用的源行号(如果可用)
#disable_existing_loggers中的键如果设置为True(这是默认的)那么来自默认配置的所有记录器都将被禁用。禁用的记录器与已删除的不一样;记录器仍然存在,但将默默地丢弃任何记录到它的内容,甚至不会将条目传播到父记录器。

    'filters': {
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        'default': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(__file__)+'/logs/','all.log'), #或者直接写路径:'c:\logs\all.log',
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
        'console':{
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'request_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(__file__)+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\request.log''
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
        'scprits_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(__file__)+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\script.log'
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['default','console'],
            'level': 'DEBUG',
            'propagate': False
        },
        'XieYin.app':{
            'handlers': ['default','console'],
            'level': 'DEBUG',
            'propagate': True
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False
        },
        'scripts': { # 脚本专用日志
            'handlers': ['scprits_handler'],
            'level': 'INFO',
            'propagate': False
        },
    }
}

views.py

# import the logging library
import logging

# Get an instance of a logger
logger = logging.getLogger(__name__)
#logger = logging.getLogger(__name__) # 这里用__name__通用,自动检测
#记录器的名称通常是__name__包含记录器的python模块的名称。可以自己进行定义,但是一定要在安装了模块的包里

def my_view(request, arg1, arg):
    ...
    if bad_mojo:
        # Log an error message
        logger.error('Something went wrong!')

日志有几个级别,我这里是error

  • logger.debug()
  • logger.info()
  • logger.warning()
  • logger.error()
  • logger.critical()

猜你喜欢

转载自blog.csdn.net/weixin_42557907/article/details/81506516