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-----------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!