您当前的位置:首页 > 互联网教程

请教利用正则表达式分析tomcat访问日志的问题

发布时间:2025-05-23 02:27:57    发布人:远客网络

请教利用正则表达式分析tomcat访问日志的问题

一、请教利用正则表达式分析tomcat访问日志的问题

1、常使用web服务器的朋友大都了解,一般的web server有两部分日志:

2、一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息

3、二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。

4、现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据?

5、首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:

6、编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录

7、把以下的注释(<!---->)去掉即可。

8、<Valve className="org.apache.catalina.valves.AccessLogValve"

9、 directory="logs" prefix="localhost_access_log." suffix=".txt"

10、 pattern="common" resolveHosts="false"/>

11、其中 directory是产生的目录 tomcat安装${catalina}作为当前目录

12、 pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。其具体的表达式为%h%l%u%t"%r"%s%b

13、但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。

14、具体的日志产生样式说明如下(从官方文档中摘录):

15、*%b- Bytes sent, excluding HTTP headers, or'-' if zero

16、*%B- Bytes sent, excluding HTTP headers

17、*%h- Remote host name(or IP address if resolveHosts is false)

18、*%l- Remote logical username from identd(always returns'-')

19、*%m- Request method(GET, POST, etc.)

20、*%p- Local port on which this request was received

21、*%q- Query string(prepended with a'?' if it exists)

22、*%r- First line of the request(method and request URI)

23、*%s- HTTP status code of the response

24、*%t- Date and time, in Common Log Format

25、*%u- Remote user that was authenticated(if any), else'-'

26、*%D- Time taken to process the request, in millis

27、*%T- Time taken to process the request, in seconds

28、There is also support to write information from the cookie, incoming

29、header, the Session or something else in the ServletRequest. It is

30、modeled after the apache syntax:

31、*%{xxx}c for a specific cookie

32、*%{xxx}r xxx is an attribute in the ServletRequest

33、*%{xxx}s xxx is an attribute in the HttpSession

34、现在我们回头再来看一下下面这个配置%h%l%u%t"%r"%s%b%T生产的访问日志数据,我们可以做哪些事?

35、*%l访问逻辑用户名,通常返回'-'

36、*%u访问验证用户名,通常返回'-'

37、*%r访问的方式(post或者是get),访问的资源和使用的http协议版本

38、有了这些数据,我们可以根据时间段做以下的分析处理(图片使用jfreechart工具动态生成):

39、分析工具包括两大部分,一个是后台解释程序,每天执行一次对后台日志数据进行解析后保存到数据库中。

40、第二个是显示程序,从数据库中查询数据并生成相应的图表信息。

二、PHP采集只要文字,不要p标签,正则表达式该怎么写

PHP采集只要文字,不要<p>标签,正则表达式该怎么写

到底内心要有多强大,才能在前一秒得知自己中了740多万元的彩票奖金,后一秒还能像没事人一样,淡定地和朋友相聚?彩民王先生用他的实际行动告诉大家,他就可以这么淡定,就连在领取奖金时,他还是一脸波澜不惊。

<p id=''>“你看,每期彩票开奖不都有不少人中奖吗?还有人中了上亿元的奖金呢,而且我觉得我迟早都会中一次大奖吧。”、9月11日,这位内心强大,表现淡定的大奖得主王先生现身自治区福利彩票发行中心,他以11+2的复式投注,中得双色球2012105期一等奖705万余元、22万余元的二等奖,再加上若干小奖,奖金合计740.8985万元。</p>

<p id=''>看上去年届不惑的王先生衣着考究,采访中,他的话语也不多,常会选择沉默凝视记者来回避他不想谈的话题,而更多时间,他看起来似乎有些心不在焉。</p>

<p id=''>有着三年多彩龄的王先生自称来自青海,来乌市做生意三年了,不是铁杆彩民,只是不定期地购买彩票,平时选号全凭感觉。这次中奖是他在9月6日路过长江路一家投注站时选的号。当时,他选了11个号码,感觉这些号码都挺好的,因为难以取舍,就花了1848元钱以11+2的复式投注,“这是我第四次花这么高的投注金额买一注彩票,因为当时感觉挺好”。</p>

<p id=''>次日晚上,王先生在宾馆接待远方来乌的朋友,闲暇时无意中上网,查询了开奖号码后再一一核对,这才发现自己中了一等奖,不过他并没有太过兴奋,而是继续和朋友叙旧。</p>

<p id=''>“我当时很高兴,心想第二天还有些要紧的事需要处理,赶快忙完这段时间,就去领奖。”王先生说,他计划把这些奖金用于自己的生意。</p>

<p id=''>王先生坦言,一直到领奖为止,他还没有把中奖的事告诉家人或朋友。“等领到钱了再告诉他们,不然我这成了巨额财产来历不明了。”王先生幽默地说。</p>

<p id=''>最后,王先生为新疆福彩爱心工程基金捐款2万元。</p></font>

只要<font>里的内容,不要<p>标签

------解决方案--------------------

最土的办法,整段采集完后,把<p id''>和</p>替换为空

------解决方案--------------------

试下这个函数,你可以自己修改下。

$text= preg_replace('/<\?|\?'.'>/','',$text);

$text= preg_replace('/<script?.*\/script>/','',$text);

$text= preg_replace('/<\/?(html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset)[^><]*>/i','',$text);

while(preg_match('/(<[^><]+)(lang|onfinish|onmouse|onexit|onerror|onclick|onkey|onload|onchange|onfocus|onblur)[^><]+/i',$text,$mat)){

$text=str_replace($mat[0],$mat[1],$text);

while(preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i',$text,$mat)){

$text=str_replace($mat[0],$mat[1].$mat[3],$text);

三、VBS正则表达式简介 -使用正则表达式

1、在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。

2、测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。

3、替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。

4、根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。

5、站点来删除某些过时的材料并替换某些HTML

6、格式化标记,则可以使用正则表达式对每个文件进行测试,看在该文件中是否存在所要查找的材料或

7、格式化标记。用这个方法,就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料,最后,可以再次使用正则表达式来查找并替换那些需要替换的标记。

8、另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript

9、的一个子集,具有丰富的字符串处理功能。与

10、的字符串处理能力带来了明显改善。不过,可能还是在

11、中使用正则表达式的效率更高,它允许在单个表达式中执行多个字符串操作。