代码之家  ›  专栏  ›  技术社区  ›  Jacob

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

  •  3
  • Jacob  · 技术社区  · 15 年前

    我试图通过使用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')
    

    由于某种原因,似乎跳过了当天的数据。当查询较早的日期时,我可以很好地返回数据。为什么会这样?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Jay Walker    15 年前

    雅各布, 谢谢你的帖子。我还无法比较IIS日志中的日期/时间。通过结合您的问题和解决方案,我可以在没有to_字符串的情况下进行搜索。

        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')  
    

    完整资料来源:

    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')  
    
        2
  •  1
  •   Jacob    15 年前

    事实证明,日志解析器没有正确地进行时间戳比较。但是,当我将时间戳转换为字符串时,字符串比较工作得很好。以下是修改后的查询的外观:

    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_STRING(TO_TIMESTAMP(date, time), 'yyyy-MM-dd hh:mm') 
            BETWEEN '2009-11-11 07:00' AND '2009-11-12 07:00'
    
        3
  •  1
  •   ByteHamster hexerei software    9 年前

    AND TO_LOCALTIME(TO_TIMESTAMP(date, time))
        BETWEEN TIMESTAMP('2009-11-11 03:00', 'yyyy-MM-dd hh:mm')  
            AND TIMESTAMP('2009-11-12 03:00', 'yyyy-MM-dd hh:mm')