我在询问是否可以将.log行与变量分开,就像构建.log文件一样。让我解释一下:
如上所示:https://httpd.apache.org/docs/2.4/logs.html
组合日志格式:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
我必须使用Java:
示例行:
xxx.xxx.xxx.xxx - - [03/Jul/2017:09:05:56 +0000] "GET /index.php?route=journal2/assets/css&j2v=2.7.6 HTTP/1.1" xxx xxx "http://xxxxxxxx.xxx.xxx/index.php?route=product/search&search=asus" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.90 Safari/537.36 Vivaldi/1.91.867.38"
我需要将此字符串分隔为:
知道了吗?如何在没有正则表达式的情况下制作它? 附:它会变成数百行,所以任何想法如何处理它们?
答案 0 :(得分:0)
字符串类具有indexOf()
等方法,您可以使用手动"搜索"特定"分隔符的字符串"。然后使用像substring()
这样的方法来获取子串。
换句话说:绝对有可能编写自己非常具体的解析代码,从字符串中提取值。
但这意味着要重新发明现有的车轮;知道你的尝试将耗费大量时间,并且结果很可能是不完整的,并且在您没有预料到的第一个日志行中中断。
当我提出你的问题时,你希望能够提供一个"格式"例如:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
然后以某种方式用于剖析日志行。抱歉 - 这是完全您使用正则表达式的内容。再说一遍:你的方法归结为发明和实现你自己的正则表达式语言和引擎。当然这是可能的,但浪费时间。
除此之外,请将此任务视为非常先进。这是 nothing 一个新手可以想到在合理的时间内做的事情。相反:花费精力学习应用现有的,久经考验,经过良好测试的技术。在这种情况下,这是要走的路(也是从业务的角度来看 - 其他任何东西也是钱的浪费)。
并假设这是为了学习目的而且#34; - 然后第一段告诉你从哪里开始。但除此之外:
如上所述:可能,但艰难工作的吨。