Django开发--日志处理2.0

日志:

logging,非常不错,也很详细(首推,查看,配置解读,使用方法,问题处理):https://www.cnblogs.com/xuzijie/p/9679707.html

很详细,以及使用7种方法,另外有,设计邮箱等日志:https://blog.csdn.net/weixin_37590093/article/details/81536372

小例子:https://blog.csdn.net/clh604/article/details/9282651

也不错,文字少:https://www.cnblogs.com/zhangqunshi/p/6641173.html

使用举例:

在要用log的view.py里面,如果想用django这个日志,则

            log=logging.getLogger('django')

            log.error(“日志内容”)

如果,想要在日志内容里面传递变量,怎么办?

            log.error(" %s : execute %s failed",变量1,变量2),比较像c的printf,还是很方便的。

settings.py内配置信息:

# log settings
# 日志的文字日志级别,由低到高分别为:DEBUG -> INFO -> WARNING -> ERROR -> CRITICAL
# 日志的数字日志级别,由低到高分别为: 10 -> 20 -> 30 -> 40 -> 50
# formatters: 指定输出的格式,被handler使用
# handlers:实际上来处理日志记录的地方。指定输出到控制台还是文件中还是其他..,以及输出的方式。被logger引用
# loggers: 指定django中的每个模块使用哪个handlers。以及日志输出的级别
# filters: 是在信息从logger传递到handler的过程中实施一些过滤行为,没有默认情况: 任何达到log level的日志信息都会被处理
# 注意:日志的输出级别是由loggers中的每个模块中level选项定义。如果没有配置,那么默认为warning级别
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,     # 默认True,默认的配置就会被禁用.但官方说这样可能有意外结果
    'formatters': {
        'standard': {
            # asctime: 时间(年月日时分秒毫秒)
            # threadName: 线程名, thread: 线程ID
            # processName: 进程名称, process: 进程ID
            # name: 日志器名称(用loggers的哪个)
            # lineno: 数字日志级别, levelname: 文字日志级别
            # message: 日志文本内容
            'format': '%(asctime)s [%(processName)s:%(process)d] [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'
        },
    },
    'filters': {
        # 'require_debug_true': {
        #     '()': 'django.utils.log.RequireDebugTrue',
        # },
    },
    'handlers': {
        # 'mail_admins': {
        #     'level': 'ERROR',
        #     'class': 'django.utils.log.AdminEmailHandler',
        #     'include_html': True,
        # },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR + '/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(BASE_DIR + '/logs/', 'request.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(BASE_DIR + '/logs/', 'script.log'),  # 或者直接写路径:'filename':'c:\logs\script.log'
        #     'maxBytes': 1024 * 1024 * 5,  # 5 MB
        #     'backupCount': 5,
        #     'formatter': 'standard',
        # },
    },
    'loggers': {
        # loggers,日志器,是有层级关系的
        # propagate属性值为1或True,则表示日志消息将会被输出到处理器指定的位置,
        # 同时还会被传递给parent日志器的handlers进行处理直到当前日志器的propagate属性为0停止,
        # 如果propagate值为0或False,则表示不向parent日志器的handlers传递该消息,到此结束。
        'django': {    # 文件形式, 控制台形式
            'handlers': ['file', 'console'],
            'level': 'INFO',
            'propagate': False
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False
        },
        # 'scripts': {  # 脚本专用日志
        #     'handlers': ['scprits_handler'],
        #     'level': 'INFO',
        #     'propagate': False
        # },
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值