首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日志解析器2.2跳过今天的IIS日志

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

Stack Overflow用户
提问于 2009-11-12 07:46:23
回答 3查看 4.6K关注 0票数 3

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

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

代码语言:javascript
运行
复制
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')

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-13 02:46:56

事实证明,Log Parser不能正确地进行时间戳比较。但是,当我将时间戳转换为字符串时,字符串比较工作得很好。下面是修改后的查询:

代码语言:javascript
运行
复制
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'
票数 1
EN

Stack Overflow用户

发布于 2010-03-02 11:06:52

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

代码语言:javascript
运行
复制
    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')  

完整源代码:

代码语言:javascript
运行
复制
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')  
票数 3
EN

Stack Overflow用户

发布于 2015-09-11 04:00:01

Log Parser具有将时间从UTC转换为本地时间的功能:

代码语言:javascript
运行
复制
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') 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1718881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档