django - 在 django 中记录用户的操作
问题描述
为了记录用户在我的 django 应用程序中所做的事情,我尝试记录 django 会话何时打开以及视图何时执行。
为此,我找到了一个解决方案,但我想知道它是否正确,以及是否没有其他更好的方法或工具可以做到这一点。有人可以告诉我吗?非常感谢。
日志文件是这样写的:
# in case django session open
datetime / ----New Session ------ / session_id
# in case view execution
datetime / -session_id- / view_name
我有这个功能:
# logs visited page and session id and session opening
def f_lou_log(request, view_name="???"):
if not request.session.session_key:
request.session.create()
logger.warning(str(datetime.datetime.now()) + " -------------------- New session --- #" + request.session.session_key)
logger.warning(str(datetime.datetime.now()) + " - #" + request.session.session_key + " - " + page)
return 1
在每个视图的开头,我都这样调用函数:
def some_view(request):
# log record
v_wait = f_lou_log(request,"some_view")
# (...) here is the view code
例如,我的日志文件如下所示:
2021-09-24 17:24:27.110718 -------------------- New session --- #x0u30n1th4b3z0otv311883ikf0d8y34
2021-09-24 17:24:27.110718 - #x0u30n1th4b3z0otv311883ikf0d8y34 - home
2021-09-24 17:24:31.373336 -------------------- New session --- #3eviiejy1k1b3we62xz13ee53n168cvm
2021-09-24 17:24:31.373336 - #3eviiejy1k1b3we62xz13ee53n168cvm - home
2021-09-24 17:26:08.319789 -------------------- New session --- #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh
2021-09-24 17:26:08.320758 - #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh - home
2021-09-24 17:26:13.104499 -------------------- New session --- #2ri8izcnhtskbmy2rrtaefyn6hnbwiki
2021-09-24 17:26:13.104499 - #2ri8izcnhtskbmy2rrtaefyn6hnbwiki - home
2021-09-24 17:26:14.834823 - #2ri8izcnhtskbmy2rrtaefyn6hnbwiki - a00brouillon_View
2021-09-24 17:26:20.864235 - #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh - a00brouillon_View
2021-09-24 17:26:25.948578 - #2ri8izcnhtskbmy2rrtaefyn6hnbwiki - a005_simple
2021-09-24 17:26:27.447930 - #2ri8izcnhtskbmy2rrtaefyn6hnbwiki - a005_simple
2021-09-24 17:26:28.148313 - #2ri8izcnhtskbmy2rrtaefyn6hnbwiki - home
2021-09-24 17:26:32.822251 - #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh - home
2021-09-24 17:26:34.154655 - #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh - a005_simple
2021-09-24 17:26:36.092244 - #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh - a005_simple
2021-09-24 17:26:37.096706 - #5ei0wbdvgm78ie3t3xlpnzyfl2f2l5jh - home
解决方案
推荐阅读
- c - MSYS2 未定义对 _imp__XXXXXXXX 的引用
- javascript - 如何避免 OpenLayers 中的双重选择?
- node.js - 如何在后端使用节点 js 在客户端存储令牌?
- coq - Coq 中的无限递归类型(用于 Bananas 和 Lenses)
- c# - 如何在 C# 中为 Pong 游戏创建记分牌
- javascript - 在使用 HTML 打开的新选项卡中渲染 SVG
- c# - 比较“对象”类型的值的最有效方法是什么
- privacy - 什么是画布指纹识别?如何反击?
- spring - 使用 yaml 配置注入 bean 列表
- r - 以长格式过滤具有相同ID的对象