django日志

Django写入日志 日志logging模块可用于记录处理事件的一些事情 组成部分 提示信息 配置日志 1.创建一个叫log的文件夹,以后存入的日志文档都在这个文件夹里面 2.定义LOGGING,同时配置formatters 3. 定义handlers 4.定义loggers 运用日志 组成部分 四个组成 loggers 用来处理传入信息 handlers 用来处理信息 filters 过... 阅读详情

django日志
首先在setting设置LOGGIN参数,主要设置

 

 

LOGGING = {
     'version': 1,
     'disable_existing_loggers': True,
     'formatters': {
         'simple': {
             'format': '[%(asctime)s] %(levelname)s : %(message)s'
         },
         'verbose': {
             'format': '[%(asctime)s] %(levelname)s %(pathname)s line:%(lineno)s %(process)d [%(threadName)s] : %(message)s'
         },
     },
     'handlers': {
         'console': {
             'level': 'INFO',
             'class': 'logging.StreamHandler',
             'formatter': 'verbose',
         },
         'infofile': {
             'level': 'INFO',
             'class': 'logging.FileHandler',
             'formatter': 'simple',
             'filename': BASE_DIR+'/logs/shop.log',
             'mode': 'a',
         },
         'warnfile': {
             'level': 'WARN',
             'class': 'logging.FileHandler',
             'formatter': 'verbose',
             'filename': BASE_DIR + '/logs/error.log',
             'mode': 'a',
         },
         'errorfile': {
             'level': 'ERROR',
             'class': 'logging.FileHandler',
             'formatter': 'verbose',
             'filename': BASE_DIR + '/logs/error.log',
             'mode': 'a',
         },
     },
     'loggers': {
         'myshop': {
             'handlers': ['console', 'infofile', 'warnfile', 'errorfile'],
             'level': 'INFO',
             'propagate': True,
         },
     },
 }

在项目启动执行初始化

 

def setup(set_prefix=True):
    """
    Configure the settings (this happens as a side effect of accessing the
    first setting), configure logging and populate the app registry.
    Set the thread-local urlresolvers script prefix if `set_prefix` is True.
    """
    from django.apps import apps
    from django.conf import settings
    from django.urls import set_script_prefix
    from django.utils.encoding import force_text
    from django.utils.log import configure_logging
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)


在settings对象的LOGGING_CONFIG
settings.LOGGING_CONFIG = 'logging.config.dictConfig'是一个函数,执行这个函数可以定义log的一些设置
代码如下
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
logging.config.dictConfig(config)

def configure_logging(logging_config, logging_settings):
    if logging_config:
        # First find the logging configuration function ...
        logging_config_func = import_string(logging_config)

        logging.config.dictConfig(DEFAULT_LOGGING)

        # ... then invoke it with the logging settings
        if logging_settings:
            logging_config_func(logging_settings)

def dictConfig(config):
    """Configure logging using a dictionary."""
    dictConfigClass(config).configure()

  def configure(self):
        """Do the configuration."""

        config = self.config
        if 'version' not in config:
            raise ValueError("dictionary doesn't specify a version")
        if config['version'] != 1:
            raise ValueError("Unsupported version: %s" % config['version'])
        incremental = config.pop('incremental', False)
        EMPTY_DICT = {}
        logging._acquireLock()
        try:
            if incremental:
                handlers = config.get('handlers', EMPTY_DICT)
                for name in handlers:
                    if name not in logging._handlers:
                        raise ValueError('No handler found with '
                                         'name %r'  % name)
                    else:
                        try:
                            handler = logging._handlers[name]
                            handler_config = handlers[name]
                            level = handler_config.get('level', None)
                            if level:
                                handler.setLevel(logging._checkLevel(level))
                        except StandardError as e:
                            raise ValueError('Unable to configure handler '
                                             '%r: %s' % (name, e))
                loggers = config.get('loggers', EMPTY_DICT)
                for name in loggers:
                    try:
                        self.configure_logger(name, loggers[name], True)
                    except StandardError as e:
                        raise ValueError('Unable to configure logger '
                                         '%r: %s' % (name, e))
                root = config.get('root', None)
                if root:
                    try:
                        self.configure_root(root, True)
                    except StandardError as e:
                        raise ValueError('Unable to configure root '
                                         'logger: %s' % e)
            else:
                disable_existing = config.pop('disable_existing_loggers', True)

                logging._handlers.clear()
                del logging._handlerList[:]

                # Do formatters first - they don't refer to anything else
                formatters = config.get('formatters', EMPTY_DICT)
                for name in formatters:
                    try:
                        formatters[name] = self.configure_formatter(
                                                            formatters[name])
                    except StandardError as e:
                        raise ValueError('Unable to configure '
                                         'formatter %r: %s' % (name, e))
                # Next, do filters - they don't refer to anything else, either
                filters = config.get('filters', EMPTY_DICT)
                for name in filters:
                    try:
                    ...

在项目中使用

 


import logging
logger = logging.getLogger('myshop')
logger.warning('数据库执行sql:{}异常,错误信息为:{}'.format(sql,e))

通过预定义的方式,在使用时直接用logger.logging.getLogger(name)

django.setup() 源码分析 from django.utils.version import get_version VERSION = (2, 2, 3, 'final', 0) __version__ = get_version(VERSION) def setup(set_prefix=True): """ Configure the settings (this happens as a si... 阅读详情

相关推荐

Django 4.x Logging 日志使用示例和配置方法

大家好,我是Mr数据杨,日志就像《三国演义》中的战报,通过不同的“日志级别”,可以快速了解整个程序的运行状况,这如同诸葛亮一样,通过高瞻远瞩的眼光,捕获战况的每一个变化。想象一下,如果没有设定好“默认配置”,那么可能会陷入被无数战报淹没的困境,如同刘备在长坂坡面对曹军的围攻,因为缺乏整体战况的了解,陷入了被动局面。而如果像周瑜那样,提前做好“默认配置”就能如同赤壁之战般,即使面对数倍于己的曹军,也能够灵活应对,最终取得胜利。再来谈谈“logging参数说明”。

Mr数据杨 3万+

django中日志配置

1、以dict的方式配置在settings.py中。2、django中使用。

weixin_42289273的博客 660

An工具介绍之摄像头

An工具介绍之摄像头

人生得意须尽欢 6187

flask log 报错raise ValueError(‘Unable to configure handler ‘ValueError: Unable to configure handler

其实这个问题是你配置的filename,也就是生成log的文件地址,他的父文件夹不存在导致的,例如我是logs/log,我的根目录下没有logs这个文件夹,现在就需要手动创建一个logs文件夹,就可以解决这个问题了。配置完log,启动项目的时候报错,查了下,记录。我的logging.json是这样。启动项目之后,却报错。

Damien_J_Scott的博客 1485

【机械臂算法】机械臂动力学参数辨识仿真

本文以puma560m机械臂为例子进行动力学参数辨识的讲解,puma560m可以在robotic toolbox中找到,这里以它真实机械臂对他的动力学参数进行辨识。此外这里还有要说的是,机械臂参数辨识其实是一个系统工程,其中和系统的机械、电子、嵌入式都有着很深的联系,并不是仿真这么简单的。

vrijheid的博客 7833

SAP中MRP运行计划行超限问题的分析与解决

SAP中基于生产性物料的采购特点,通常会采用采购计划协议的方式进行采购。其具体的采购计划通常来自于成品计划独立需求,然后通过物料清单,经由MRP跑出。 在采购计划协议中的计划行中,存在一个计划行号,随着MRP在不断跑出新的计划行,该行号资源会消耗完。当计划行号消耗完后,MRP不会再跑出新的计划行。且在MD04或MD02中看不到类似提示信息。此时可以通过MD05来查看是否出现类似下图的提示信息。 ...

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 3844

python之logging模块详解

logging模块是python自带的模块,对于我们在开发过程中调试的帮助,以及生产之后记录关键信息有着重要的作用,所以我们需要对logging充分了解之后,才能做出最正确,最有效的决策。

战渣渣的博客 2734

Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

Polyworks脚本开发学习笔记(十五)-利用Python连接Polyworks的COM组件

qq_43662503的博客 2501

Django日志

下面我们打开该日志文件查看一下,如图11.4中的箭头和标识所示,虽然Logger日志信息文件opt.log中输出了很多信息,但还是可以找到【代码11-9】中通过logger对象输出的调试信息。使用日志记录的方法很简单,在Django项目的配置文件setting.py中配置好Logger、Handle、Filter和Formatters后,就可以将需要的日志记录的调用放入代码中。日志记录还可以包含有用的元数据,该元数据描述了正在记录的事件,可以包括详细信息,例如堆栈跟踪或错误代码。如果没有,该消息将被忽略。

夏天又到了的专栏 1739

快速上手CH340N电路设计(CH340N USB转串口模块 USB Type-C接口 CH340系列芯片讲解)

一、上模块 二、功能分析 l 芯片:CH340N l 输入接口:USB、TYPE-C l 输出接口:TTL(5V\3.3V\GND\TX\RX) l 指示灯:电源、TX、RX 三、CH340x芯片 l CH340 是一个 USB 总线的转接芯片,实现 USB 转串口 l 全速 USB 设备接口,兼容 USB V2.0 l 硬件全双工串口,内置收发缓冲区,支持通讯波特率 50bps~2Mbps l 支持常用的 MODEM 联络信号 RTS、DTR、DCD、RI、DS...

东小东博客 5万+

【脑电信号】脑电信号EEG形态学滤波处理【含Matlab源码 4023期】

脑电信号EEG形态学滤波处理 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 823

Django之日志

概述 django框架的日志通过python内置的logging模块实现的,日记可以记录自定义的一些信息描述,也可以记录系统运行中的一些对象数据,还可以记录包括堆栈跟踪、错误代码之类的详细信息 ​ logging主要由4部分组成:Loggers、Handlers、Filters和Formatters settings中完整的配置 LOGGING = { # 固定值 ...

why404 1506

13、基因相似性度量的相关性及特征选择研究

本文研究了基因相似性度量和特征选择在生物学中的应用,详细介绍了GO术语相似性度量的多种方法,包括语义度量和路径长度度量,并分析了不同方法在酵母和人类数据集上的表现。研究发现,Avg-sum方法和基于路径长度的度量在多数情况下效果较好。此外,通过晚期辐射毒性预测的案例研究,探讨了特征选择的重要性及可能面临的过拟合和噪声干扰问题,并提出了相应的解决策略。

js777的博客 127

【Django】Django日志管理

Django使用Python内置的logging模块处理系统日志。

Python、Golang、大数据 2070

uniapp [全端兼容] - 实现上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频和删除功能,上传单个或多个视频文件及大文件(H5、小程序、app)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp+uview上传视频并预览,UNI-APP视频上传组件,实现视频文件上传视频回显,上传视频并预览、上传多个视频,实现上传视频功能+预览,上传显示视频功能,上传视频预览移除,批量上传视频,上传超大视频文件,视频上传并预览效果,uniapp上传视频,使用uview上传视频及预览,上传视频和删除视频功能,视频流上传播放功能,上传视频到后端,视频上传与实时预览功能,upload上传组件,视频播放器

🏆 前端领域优质创作者 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Django 日志配置

Django日志配置解读

sbdd6556的博客 1360

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

django 中使用日志

日志是个好东西,但却并不是所有人都愿意记,直到出了问题才追悔莫及,长叹一声,当初要是记日志就好了。但记日志却是个技术活,不能什么都不记,但也不能什么都记。如果记了很多没用的信息,反而给查日志排错的过程增加很多困难。所以,日志要记录在程序的关键节点,而且内容要简洁,传递信息要准确。要清楚的反应出程序当时的状态,时间,错误信息等。只有做到这样,我们才能在第一时间找到问题,并且解决问题。......

csdn姚宏波 4056

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

django 日志

Django 使用Python内建的logging模块打印日志,python的looging配置由四个部分组成: 记录器-Logger 处理程序- Handler 过滤器-Filter 格式化-Formatter 记录器-Logger Logger为日志系统的入口,每个logger的命名都是bucket,可以向这个bucket写入需要处理的消息。简而言之,打印每一条日志信息都是通过这个Logger处理 每个logger都有一个日志级别。日志级别表示该logger将要处理的消息严重性。 Python定义以下几

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 1663

Django 日志配置解析

在 Django 中设置和使用日志是一个有效的方式来监控和调试应用程序。日志可以帮助你理解应用的运行状态,记录错误信息,以及跟踪重要的系统事件。Django 使用 Python 的标准 logging 模块来配置和管理日志。

JacinLee的博客 2084

django日志使用

1、setting.py中加入logging配置 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { # 日志格式 'standard': { 'format': '[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] '

苍穹的博客 518

Django 中如何优雅的记录日志

技术博客:https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。 日志是个好东西,但却并不是所有人都愿意记,直到出了问题才追悔莫及,长叹一声,当初要是记日志就好了。 但记日志却是个技术活,不能什么都不记,但也不能什么都记。如果记了很多没用的信息,反而给查日志排错的过程增加很多困难。 所以,日志要记录在...

AlwaysBeta 的专栏 1094

Django配置日志输出

django线上环境中的日志输出是相当重要的,它可以将所有的错误、警告、调试等重要信息全部输出到日志,这样便于维护和排查问题。 首先先来看看实际中配置:settings DEBUG = False #线上环境时要关闭debug ALLOWED_HOSTS = ['*'] #线上环境时要允许所有ip访问,或有自己的规则 #下面就是logging的配置 LOGGING = { 'ver...

weixin_42539198的博客 2681

django日志模块

django日志配置 1.普通配置 settings.py BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) log_path = os.path.join(BASE_DIR, 'log') if not os.path.exists(log_path): os.mkdir(log_path) LOGGING = { 'version': 1, 'disable_existing_logging':

wphoenix的博客 1万+
上一篇: 使用Python的logging.config.fileConfig配置日志
下一篇: django app注册过程
qq_15551663
博客等级 码龄12年 4粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值