我已經給各種請求。其中兩個請求是作爲例子給出的。的Http日誌分析在C++中
過濾器:
- REQUEST_TYPE:和過濾器在以下格式給出| POST | PUT | DELETE GET
- RELATIVE_URL:/主/指數或/等
- IP:111.119 .206.2或127.0.0.1等
- REQUEST_FORMAT:JS或JSON或HTML或null /空白等(注意:空/空白請求格式應視爲HTML。)
- RESPONSE_CODE:「200 OK」或「401 Unauthorized」或「422 Unprocessable Entity」,等過濾器的
實施例下面給出的請求。我必須解析這些請求並檢查這些過濾器,並輸出這些過濾器是否存在於請求中。每個過濾器的輸出應包含5行,表示每個請求中每個過濾器的出現次數。
請建議我如何爲我接收輸入取輸入和處理,從而完成在最短的時間這個活動。
請求格式:
Started <REQUEST_TYPE> <RELATIVE_URL> for <IP> at <REQUEST_TIMESTAMP>
Processing by <CONTROLLER>#<ACTION> as <REQUEST_FORMAT>
Parameters: <Key Value pair for each parameters>
<LOG_LINE_1>
<LOG_LINE_2>
...
...
<LOG_LINE_N>
Rendered <SOME_TEMPLATE_0> (<TIMETAKEN_0>)
Rendered <SOME_TEMPLATE_1> (<TIMETAKEN_1>)
...
...
Rendered <SOME_TEMPLATE_N> (<TIMETAKEN_N>)
Completed <RESPONSE_CODE> in <OVERALL_TIME_TAKEN> (Views: <TIME_VIEWS> | ActiveRecord: <TIME_ACTIVE_RECORD> | Sphinx: <TIME_SPHINX>)
請求1:
Started GET "/terminal/is_on?ts=1448979876581&b=Chrome&v=46.0×tamp=1448979524369&sl=1421&tabOpened=1448979396.012" for 127.0.0.1 at Tue Dec 01 19:54:36 +0530 2015
Processing by TerminalController#is_on as JSON
Parameters: {"tabOpened"=>"1448979396.012", "v"=>"46.0", "b"=>"Chrome", "ts"=>"1448979876581", "sl"=>"1421", "timestamp"=>"1448979524369"}
[BS_SESSION_LOG 218] 3 : Tue Dec 01 19:54:37 +0530 2015 : /terminal/is_on : before request
LIVE SESSION LOGS [Tue Dec 01 14:24:37 UTC 2015] [SummaryLog Transition] - User: 3 - Inside terminal#is_on - sl - 1421 - Session: 627632189903c04da7801aafbac4d992 - bs_session_id: 218
UnLocking session id 627632189903c04da7801aafbac4d992, bs_session id: 627632189903c04da7801aafbac4d992
[BS_SESSION_LOG 218] 3 : Tue Dec 01 19:54:37 +0530 2015 : /terminal/is_on : after request : true
Completed 200 OK in 446ms (Views: 11.1ms | ActiveRecord: 14.0ms | Sphinx: 0.0ms)
請求2:
Started GET "/status/is_new?ts=1448979876581" for 127.0.0.1 at Tue Dec 01 20:01:18 +0530 2015
Processing by TerminalController#is_on as JSON
Parameters: {"tabOpened"=>"1448979396.012", "v"=>"46.0", "b"=>"Chrome", "ts"=>"1448980278551", "sl"=>"1421", "timestamp"=>"1448979524369"}
[BS_SESSION_LOG 218] 3 : Tue Dec 01 20:01:19 +0530 2015 : /terminal/is_on : before request
LIVE SESSION LOGS [Tue Dec 01 14:31:19 UTC 2015] [SummaryLog Transition] - User: 3 - Inside terminal#is_on - sl - 1421 - Session: 627632189903c04da7801aafbac4d992 - bs_session_id: 218
UnLocking session id 627632189903c04da7801aafbac4d992, bs_session id: 627632189903c04da7801aafbac4d992
[BS_SESSION_LOG 218] 3 : Tue Dec 01 20:01:19 +0530 2015 : /terminal/is_on : after request : true
Completed 200 OK in 539ms (Views: 9.0ms | ActiveRecord: 22.4ms | Sphinx: 0.0ms)
和過濾器是:
- GET
- /終端/ is_on?TS = 1448979663546 & B =鉻& V = 46.0 &時間戳= 1448979524369 & SL = 1421 & tabOpened = 1448979396.012
- 127.0.0.1
- JSON
- 200 OK
輸出:
2
1
2
2
2
更新了問題中的請求格式 – myst552
然後使用標準解析技術。但我不認爲你的解釋是真正指定請求格式。你應該(至少在紙上)寫一些EBNF。一旦你完成了格式的規範,編寫解析器就是標準做法。 –
我只需要在C++中編寫一個簡單的實現。你告訴的事情可能需要一些時間。 – myst552