我有一个项目,我正在解析Tomcat日志以获取有用的信息。起初,该程序非常简单,只需一个grep即可轻松完成。但是,一旦意识到这些信息可能有用,我就被要求做更多更复杂的解析。
我希望将日志条目的通用信息存储在数据库中,然后执行各种查询以获取自定义报告。大部分信息都非常简单,易于解析。
最后,还有User Agent Mess ...我的意思是用户代理字符串。
用户代理字符串似乎布局相当松散。例如,其中99%以Mozilla/4.0
开头,尽管其中大部分来自浏览器与Mozilla,Netscape或Firefox无关,甚至不使用Gecko布局引擎。
不幸的是,用户代理字符串在我们的报告中变得非常重要。例如,我们需要知道有多少人使用Safari或使用任何移动浏览器,或者使用基于Linux的系统而不是Windows与iOS。
最大的问题是我不知道未来会有什么要求,所以我不能100%确定哪些信息有用且哪些无用(看起来99.7%的用户使用的是Mozilla 4.0浏览器! )。
那么,您将如何解析用户代理字符串并提取我可以生成报告的有用的信息?
答案 0 :(得分:0)
我将启动另一个表:UserAgentString,(id,UAS,num_uses,mobile,);
解析日志时,为表中的每个日志条目存储UserAgentString.id而不是原始用户代理字符串,并将新字符串添加到UserAgentString表中。
每次找到重复项时,都会增加num_uses列。如果(当)知道它代表移动设备,请设置移动列。添加其他列并将其设置为代表uas的其他属性,因为您发现它们很有用。