如何在前端web服务器中,打印出⽤户操作⽹页痕迹的操作⽇志
⼀、背景
由于前端项⽬是静态⽂件,是在浏览器端运⾏,如果要打⽇志到服务器,⽆法直接通过某些⼯具完成。只有那些运⾏在服务器端的程序,如后台程序,才能直接的在服务器端打印⽇志。但是我们必须要记录下前端页⾯的操作轨迹,就必须另辟蹊径了。
⼆、探索结果
1.从apache的⽇志⼊⼿
通过查阅资料,发现apache服务器或者nginx服务器都能够记录前端发送到服务器的请求。并能记录请求的url连接,请求时间,客户端浏览器等信息。
2.通过请求的URL记录⽇志
所以,我们可以通过前端请求的url来记录⽇志。将⽇志写在url中,对这种⽆效的⽇志url前端进⾏特殊处理,异步调⽤,不会影响前端页⾯的使⽤。后台apache接受到请求后,将对应的⽇志url按照⾃⼰的规范进⾏解析,提取⽇志信息。我们可以对特定url的连接进⾏⽇志过滤,将⽇志请求单独存放
优点:原理简单,只需要配置普通的apache ⽇志配置即可。
缺点:
1. 记录的⽇志如果包含敏感信息,发送的请求在前端浏览器能被随意查看,可能存在安全问题
2. 由于传递的最终也是个字符串,对url的书写规范要求严格,定义复杂,解析繁琐,且容易出错
3.进⼀步探索能否通过获取POST请求的参数,来传递⽇志
上⾯的传统⽇志记录⽅式,虽然能获取到get post请求,但是缺获取不到请求体中的内容。如果需要获取请求体body中的内容,则需要使⽤apache的另⼀个模块mod_dumpio。
(1) 配置mod_dumpio
⾸先校验dumpio模块是否存在
# httpd -M | grep 'dumpio'
dumpio_module (shared)
出现结果表⽰存在该模块
其次配置dumpio。
在f配置⽂件中到如下⾏:
# LoadModule dumpio_module modules/mod_dumpio.so
去掉前⾯的#
然后在该⽂件中添加如下配置:
LogLevel dumpio:trace7
<IfModule dumpio_module>
DumpIOInput On
</IfModule>
(2) 配置完成,重启apache
nginx部署前端项目(3)⽇志打印结果
访问服务器:
curl -X POST -d '{"key": "value"}' '10.221.157.129:8480/xxx'
在error.log⾥查看打印的⽇志如下:
[Wed Sep 02 10:18:49.075317 2020] [dumpio:trace7] [pid 50622:tid 139724777260800] mod_dumpio.c(103): [client 172.26.3.88:41748] mod_dumpio:  du mpio_in (data-HEAP): {"key": "value"}
这样就可通过json格式获取⽇志
**优点:**定义规范⽅便,不容易出错,格式简洁明了。
缺点:⽇志量较⼤,且⽇志较混乱,且都在error_log中可能会⼲扰,影响查。同样存在⽇志敏感信息安全问题

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。