承接上一个课件《分析Nginx日志获取IP地址的省份信息》
现在希望是获取浏览器和操作系统相关数据
准备一个工具类UserAgentUtil
![fdccbdd18e6d6010d69f81598105f9ee.png](https://i-blog.csdnimg.cn/blog_migrate/4565b5994ff878ca4dfb1c8bee998d5b.jpeg)
编写代码
![b9df3641ea423de7e72d9154a95c9c2f.png](https://i-blog.csdnimg.cn/blog_migrate/851c8c0a2009fcc717c1cbe217a99fa6.jpeg)
解析浏览器的useragent字符串,返回useragentinfo对象
![39442d53f1ee52abd6aec2d1a09453cc.png](https://i-blog.csdnimg.cn/blog_migrate/1cfb243164c1759cdaeb9cfca4aa478d.jpeg)
继续编写LocalLogAccess
补全浏览器信息,代码位置
![533eb2c1a43529db92a688e1717509e5.png](https://i-blog.csdnimg.cn/blog_migrate/936c353ae6a219e46c0103ccb730666b.jpeg)
EventLogConstants中填写useragent参数
![857b88bdff312e0c86dd41ee332f4a3e.png](https://i-blog.csdnimg.cn/blog_migrate/967cf625ff31e8e5b903c2b731a343d0.jpeg)
EventLogConstants中填写想要获取的信息
![feb23e4089a525664e5f20ef3456c7d7.png](https://i-blog.csdnimg.cn/blog_migrate/dae52418ddcf9af5b6d24178029ede2e.jpeg)
可以补全代码了
![a4842262b798a8d7dcd3e17a15ad116d.png](https://i-blog.csdnimg.cn/blog_migrate/4d07a810f222a969e3fc54e5fc761e98.jpeg)
准备我们服务器上的测试数据,进行测试,出现问题,因为数据更改了
![1d65ac35bff7081726890bbfbf7bf9ef.png](https://i-blog.csdnimg.cn/blog_migrate/0e6511d207ffdb018603e182178417ae.jpeg)
所以更改了几个地方
文本长度
![2fea025ef96141dc62bdbb799012da9e.png](https://i-blog.csdnimg.cn/blog_migrate/83b5b4244f1b3a135718d8e5b103444e.jpeg)
获取数据的地方
![af8fd9675909b64ad8a40ffb824ea599.png](https://i-blog.csdnimg.cn/blog_migrate/e38391a98e61d3c8dbddac10ddfc9f83.jpeg)
再测试数据
![63fe0bcdb2d7c3659568388126349337.png](https://i-blog.csdnimg.cn/blog_migrate/afc81a624cd8332e60b78d9a3a81f6cf.jpeg)
得到结果
![3aa4384c5b90392466bbbc6d6fa5bc23.png](https://i-blog.csdnimg.cn/blog_migrate/553318f304038b2f8b16a5d78e79cf22.jpeg)
接下来我们对数据进行下过滤,防止出现错误数据
创建类AnalysisDataMapper
![e4e2665e0f0b1d641af35660637270a4.png](https://i-blog.csdnimg.cn/blog_migrate/153d744ede267397062086c447ea10f5.jpeg)
编写代码,添加日志
![4849076188ed08b3634e3fab7f88fa6d.png](https://i-blog.csdnimg.cn/blog_migrate/fe7813afc7c8635a0f56bbb55b444802.jpeg)
编写map方法
![c9966c8ff7cdfe520529b81a6b844778.png](https://i-blog.csdnimg.cn/blog_migrate/8e6513cbbf90f19ff3b2bb47ddc6f66a.jpeg)
EventLogConstants中添加事件名称
![8a8b9cac387dd4f001bcbb1e9669ff53.png](https://i-blog.csdnimg.cn/blog_migrate/5e76f9be4498a4e57d3c9afd750f7ca9.jpeg)
EventLogConstants中添加添加事件枚举
![38febd230ad757f7c14e1816786d2c84.png](https://i-blog.csdnimg.cn/blog_migrate/fa7e368d3b70eba3c5470add5a9a7e3d.jpeg)
指定事件
![13d166169fddcc44ebc6865b6c84f226.png](https://i-blog.csdnimg.cn/blog_migrate/f42dcd99ba98911b36e6781176da992b.jpeg)
添加属性等余下内容
![21794e30ed7a388d15d9b7ff97c3093f.png](https://i-blog.csdnimg.cn/blog_migrate/b51fd1b0623c8d1a0836f916b047ac1f.jpeg)
为了方便起见,我们把LocalLogAccess中的全局参数都放到EventLogConstants中,处理下出现的错误,就不一一列举了
![236f8a759cbbcf2cc4f59dca2c96415b.png](https://i-blog.csdnimg.cn/blog_migrate/835df4ec51d35008a0bc45faa1bcf3a6.jpeg)
编写filterEventData方法
完成事件过滤
![ae7bbbdd9dc1fcd6d5abdbe8d9c4a89f.png](https://i-blog.csdnimg.cn/blog_migrate/b92b774282f44642b93c1973b0afe6aa.jpeg)
构建共同字段过滤
![efa856c70f5ecab631745438c5adcd81.png](https://i-blog.csdnimg.cn/blog_migrate/a99fe8c082288fe86d63715936e4cb76.jpeg)
针对不同的平台、不同的事件进行数据过滤判断
![a27e7da4f5d8dbf78f852feebdfe919c.png](https://i-blog.csdnimg.cn/blog_migrate/fb83c7c5c2a3ef66ab5723ee91d524fb.jpeg)
平台判断
![5c2376c0033943458a9afa5caabe50d4.png](https://i-blog.csdnimg.cn/blog_migrate/53f3d5b110e6aa1c287211776389cbc3.jpeg)
再判断事件
![d192dfc597a8be5abda1c6e22aeab07a.png](https://i-blog.csdnimg.cn/blog_migrate/5f8caa126aa43fc7d33e485c1bcfd7a4.jpeg)
再判断另外的平台(暂时不做,主要是针对js_sdk做判断)
![9be5e706ab922946fdbba99b8342aa03.png](https://i-blog.csdnimg.cn/blog_migrate/2e6c2bbba0405a5b921da250ca7b43ca.jpeg)
代码已经放到云盘,下载就可以了
![fafc1665f8a60833ad949bd71db9a91e.png](https://i-blog.csdnimg.cn/blog_migrate/cbcf7e12b079aa522a17c08bfb3e730e.jpeg)