【问题标题】:Log parser not treating "" as one field日志解析器不将“”视为一个字段
【发布时间】:2014-06-30 12:33:14
【问题描述】:

我正在尝试使用 LogParser 2.2 解析 IIS 日志文件,但是当涉及到用户代理时我遇到了问题,因为它看到以下用户代理中的空格并认为这是一个新字段...

"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"

它不关心字符串周围的“”,任何人都知道让它将“”之间的任何东西都视为一个字段?

谢谢,

附言这来自 IIS 高级日志记录模块生成的日志。

【问题讨论】:

    标签: iis user-agent logparser iis-logs


    【解决方案1】:

    这是因为 w3c 标准不包括使用空格,日志解析器会看到空格并假设它是一个新字段,无论是否带有引号。从以下页面

    “条目由一系列与单个 HTTP 相关的字段组成 交易。字段用空格分隔,使用制表符 鼓励用于此目的的字符。如果某个字段在 特定条目破折号“-”标记省略的字段。指令记录 有关日志记录过程本身的信息。”

    http://www.w3.org/TR/WD-logfile.html

    Robert McMurray 写了一篇关于如何编写 COM 插件的博客,在我的研究中试图解决同样的问题,这似乎是最好的解决方案(没有编写一个正则表达式,将 "" 中的所有空格替换为 " +")

    http://blogs.iis.net/robert_mcmurray/archive/2013/02/28/advanced-log-parser-part-7-creating-a-generic-input-format-plug-in.aspx

    希望对你有帮助

    编辑:我已经确定有办法做到这一点,请参阅下面的示例,使用我手动添加到 IIS 高级日志记录的 X-Header-For 字段,重要的位是粗体。

    LogParser.exe "SELECT SUBSTR(X-Header-For, 0, INDEX_OF(X-Header-For, ',')) as [Remote Ip], date, time, cs-uri-stem, s-contentpath , sc-status FROM $log" -i:W3C -dQuotes ON

    【讨论】:

    • 鉴于标准的引用,这不只是 IIS 高级日志记录模块的错误吗?在字段之间使用标签,一切正常吗?
    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    相关资源
    最近更新 更多