日志解析器 2.2 跳过今天的 IIS 日志

Jac*_*cob 3 iis utc logparser

我试图通过使用 Log Parser 2.2 解析 IIS 日志来计算网站上特定 URL 的点击次数。一切似乎都工作正常,除了它对时间戳的处理让我非常困惑。

IIS 日志具有以 UTC 时间表示的所有时间戳。因此,在我的应用程序中,我将服务器时间转换为 UTC,然后再将其插入查询。但是,当我尝试查询当天的数据时,尽管我看到了日志文件中的记录,但我得到的计数为零。我尝试运行以获取当天所有内容的生成查询如下所示(查询于 2009 年 11 月 11 日运行,我使用亚利桑那州时间):

SELECT COUNT(*) 
FROM \\Server\IIS Logs\LogFiles\W3SVC1\u_ex*.log
WHERE 
    cs-method = 'GET' 
    AND cs(Referer) NOT LIKE '%ntorus%'
    AND c-ip NOT LIKE '192%'
    AND c-ip NOT LIKE '127%'
    AND (
        cs-uri-stem = '/' 
        OR cs-uri-stem = '/myurl')
    AND sc-status BETWEEN 200 AND 299 
    AND date BETWEEN 
        TIMESTAMP('2009-11-11 07:00', 'yyyy-MM-dd hh:mm') 
        AND TIMESTAMP('2009-11-12 07:00', 'yyyy-MM-dd hh:mm')
Run Code Online (Sandbox Code Playgroud)

看起来由于某种原因,当天的数据被跳过了。当查询较早的日期时,我可以正常返回数据。为什么会发生这种情况?

Jay*_*ker 5

雅各布,谢谢你的帖子。我在比较 IIS 日志中的日期/时间时也遇到了问题。通过结合您的问题和解决方案,我能够在没有 TO_STRING 的情况下进行搜索。

    TO_TIMESTAMP(date, time) 
        BETWEEN TIMESTAMP('2009-11-11 07:00', 'yyyy-MM-dd hh:mm')  
            AND TIMESTAMP('2009-11-12 07:00', 'yyyy-MM-dd hh:mm')  
Run Code Online (Sandbox Code Playgroud)

完整来源:

SELECT COUNT(*)  
FROM \\Server\IIS Logs\LogFiles\W3SVC1\u_ex*.log 
WHERE  
    cs-method = 'GET'  
    AND cs(Referer) NOT LIKE '%ntorus%' 
    AND c-ip NOT LIKE '192%' 
    AND c-ip NOT LIKE '127%' 
    AND ( 
        cs-uri-stem = '/'  
        OR cs-uri-stem = '/myurl') 
    AND sc-status BETWEEN 200 AND 299  
    AND TO_TIMESTAMP(date, time) 
        BETWEEN TIMESTAMP('2009-11-11 07:00', 'yyyy-MM-dd hh:mm')  
            AND TIMESTAMP('2009-11-12 07:00', 'yyyy-MM-dd hh:mm')  
Run Code Online (Sandbox Code Playgroud)

  • 快速评论.. 日期格式字符串区分大小写,编写“yyyy-mm-dd”会让您浪费 15 分钟来尝试找出 LogParser 日期损坏的原因。叹。 (3认同)