无需插件或直接访问数据库获取访问日志?Moodle API学习数据拉取咨询
Moodle访问日志API拉取方案(无需插件/数据库直连)
讲师拉取课程访问日志
Moodle核心Web服务API支持直接拉取访问日志,无需额外插件或数据库权限,操作步骤如下:
配置Web服务并生成令牌
- 进入站点管理 → 高级功能,启用"Web services"
- 进入站点管理 → 插件 → Web服务 → 外部服务,创建专属服务(如
course_log_service),添加core_log_get_logs函数 - 进入站点管理 → 插件 → Web服务 → 管理令牌,为你的讲师账号生成令牌(确保账号拥有
core/log:view权限)
API调用示例
以下是Python实现代码(几行即可完成,贴近Canvas的操作体验):import requests MOODLE_SITE = "https://your-moodle-domain.com" TEACHER_TOKEN = "your-generated-token" TARGET_COURSE_ID = 123 # 替换为你的课程ID # 构造请求参数 params = { "wstoken": TEACHER_TOKEN, "wsfunction": "core_log_get_logs", "moodlewsrestformat": "json", "courseid": TARGET_COURSE_ID, "action": "view", # 可选:仅过滤"查看"类动作 "component": "mod_resource,mod_page" # 可选:仅过滤资源/页面访问记录 } # 拉取日志数据 response = requests.get(f"{MOODLE_SITE}/webservice/rest/server.php", params=params) raw_log_data = response.json() # 后续可直接用raw_log_data做可视化分析也可用curl快速测试:
curl "https://your-moodle-domain.com/webservice/rest/server.php?wstoken=your-token&wsfunction=core_log_get_logs&moodlewsrestformat=json&courseid=123&action=view"
学生获取自身访问数据
学生可通过相同API拉取个人访问日志,只需确保账号拥有core/log:viewown权限(默认已开启),操作如下:
学生生成个人令牌
- 学生进入个人主页 → 偏好设置 → 安全 → 生成令牌,选择之前创建的
course_log_service
- 学生进入个人主页 → 偏好设置 → 安全 → 生成令牌,选择之前创建的
学生端API调用示例
import requests MOODLE_SITE = "https://your-moodle-domain.com" STUDENT_TOKEN = "student-personal-token" params = { "wstoken": STUDENT_TOKEN, "wsfunction": "core_log_get_logs", "moodlewsrestformat": "json", "userid": "me" # 自动关联当前学生账号 } response = requests.get(f"{MOODLE_SITE}/webservice/rest/server.php", params=params) personal_logs = response.json()
关键注意事项
- 权限自动过滤:Moodle会根据令牌所属账号的权限返回对应日志,讲师能获取课程内所有学生记录,学生仅能查看自身数据
- 数据字段:返回的日志包含用户ID、时间戳、访问资源ID、动作类型等原始字段,可直接用于可视化分析
- 版本兼容:
core_log_get_logs函数适用于Moodle 3.10+版本,旧版本可替换为core_log_get_entries(功能逻辑一致)
内容的提问来源于stack exchange,提问作者monotreme
相关产品推荐
相关产品推荐

