Django项目如何配置日志文件信息

1、以dict的方式配置在settings.py中

复制代码
# 日志文件简单配置
'''
LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "handlers": {
        "file": {
            "level": "DEBUG",
            "class": "logging.FileHandler",
            "filename": os.path.join(os.path.dirname(BASE_DIR),"logs/debug.log"),
        },
    },
    "loggers": {
        "django": {
            "handlers": ["file"],
            "level": "DEBUG",
            "propagate": True,
        },
    },
}
'''
# Logging
# 日志文件规范配置
LOG_DIR = os.path.join(BASE_DIR, 'logs')
os.makedirs(LOG_DIR, exist_ok=True)

# 日志配置
LOGGING = {
    'version': 1,  #使用的python内置的logging模块,那么python可能会对它进行升级,所以需要写一个版本号,目前就是1版本
    'disable_existing_loggers': False, #是否去掉目前项目中其他地方中以及使用的日志功能,但是将来我们可能会引入第三方的模块,里面可能内置了日志功能,所以尽量不要关闭。
    'formatters': { #日志记录格式
        'standard': { # asctime记录时间,filename 表示日志发生的文件名称,funcName模块方法名,lineno行号,levelname等级,message错误信息
            'format': '[%(asctime)s]->%(filename)s->%(funcName)s->line:%(lineno)d [%(levelname)s]%(message)s'
        },
        'simple': {
            'format': '%[%(asctime)s]->(levelname)s->%(module)s->%(lineno)d->%(message)s'
        },
    },
    'filters': { #过滤器:可以对日志进行输出时的过滤用的
        'require_debug_true': { #在debug=True下产生的一些日志信息,要不要记录日志,需要的话就在handlers中加上这个过滤器,不需要就不加
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'require_debug_false': { #和上面相反
            '()': 'django.utils.log.RequireDebugFalse',
        },
    },
    'handlers': { #日志处理方式,日志实例,向哪里输出
        'console': { #在控制台输出时的实例
            'level': 'INFO', #日志等级;debug是最低等级,那么只要比它高等级的信息都会被记录
            'filters': ['require_debug_true'], #在debug=True下才会打印在控制台
            'class': 'logging.StreamHandler', #使用的python的logging模块中的StreamHandler来进行输出
            'formatter': 'simple'
        },
        'file': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            # 日志位置,日志文件名,日志保存目录必须手动创建
            'filename': os.path.join(LOG_DIR, "my_django.log"), #注意,你的文件应该有读写权限。
            # 日志文件的最大值,这里我们设置300M
            'maxBytes': 300 * 1024 * 1024,  # B
            # 日志文件的数量,设置最大日志数量为10
            'backupCount': 10,
            # 日志格式:详细格式
            'formatter': 'standard',
            'encoding': 'utf-8',  # 设置默认编码,否则打印出来汉字乱码
        },
    },
    # 日志对象
    'loggers': {
        'django': {  #和django结合起来使用,将django中之前的日志输出内容的时候,按照我们的日志配置进行输出,
            'handlers': ['console', 'file'], #将来项目上线,把console去掉
            'propagate': True, #冒泡:是否将日志信息记录冒泡给其他的日志处理系统,工作中都是True,不然django这个日志系统捕获到日志信息之后,其他模块中可能也有日志记录功能的模块,就获取不到这个日志信息了
        },
    }
}

2、django中使用

复制代码
import logging
logger = logging.getLogger('django')

# Create your views here.

class IndexView(generic.ListView):
    template_name = "polls/index.html"
    context_object_name = "latest_question_list"
    logger.info('test log')
    def get_queryset(self):
        #Return the last five published questions.
        return Question.objects.filter(pub_date__lte=timezone.now()).order_by("-pub_date")[:5]

3、启动django,测试查看

打开浏览器,进入网址,http://127.0.0.1:8000/polls/

查看生成的日志文件:vim ./mysite/logs/my_django.log

复制代码
[2023-04-24 11:44:22,623]->autoreload.py->run_with_reloader->line:637 [INFO]Watching for file changes with StatReloader
[2023-04-24 11:44:22,639]->views.py->IndexView->line:16 [INFO]test log
[2023-04-24 11:44:27,869]->basehttp.py->log_message->line:161 [INFO]"GET /polls/1/ HTTP/1.1" 200 530
[2023-04-24 11:44:28,361]->basehttp.py->log_message->line:161 [INFO]"POST /polls/1/vote/ HTTP/1.1" 200 586

-----------------------------------end-----------------------------------

相关推荐
外收内放9 分钟前
数据分析(jupyter与pandas初体验)
python·学习
花间相见25 分钟前
【计算基础|网络04】—— HTTP接口实战(下):接口测试、鉴权与跨域排错
java·linux·人工智能·后端·python·计算机网络·postman
慧都小项26 分钟前
Python 跨文件重构怎么验证?PyCharm 用法查找、重构预览与测试流程
python·重构·pycharm·单元测试
SEO_juper30 分钟前
2026年用Python批量审计XML Sitemap:揪出sitemap.xml中的“配置错误/死链/过期页“(附完整代码)
java·python·seo·外贸独立站·谷歌优化
钱栈up36 分钟前
自动化多平台发布:脚本报FAIL时用三个信号判断真实状态
python
余槐i36 分钟前
拆解 Agent 核心原理|从零动手实现简易 AI 智能体(三)
人工智能·python·fastapi·ai agent
程序员AlbertTu40 分钟前
# Mantissa 使用教程 — Python 版与 C++ 版
c++·python·数值运算
童园管理札记1 小时前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
陈年老古董1 小时前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目
10mAh1 小时前
【Python】从零开始做一个重复文件查找工具——找出改名副本,生成核对报告
python