У меня есть файл журнала и первая строка: **99.91.220.138 - - [05/Oct/2015:06:37:26 +0300] "GET /R/0A/ID_0000013091.ism/QualityLevels(1469889)/Fragments(video=14795200000) HTTP/1.1" 200 658377 "-" "Firefox/1.5" "-" rt=0.000 ut="-" cs=HIT**
Я хочу отделить эту строку и напечатать их:
- IP-адрес пользователя : 99,91,220,138
Время события : [05 / Oct / 2015: 06: 37: 26 +0300]
Метод запроса : GET
Адрес содержимого : /R/0A/ID_0000013091.ism/QualityLevels(1469889)/Fragments(video=14795200000)
Имя контента : ID_0000013091
битрейт контента i : QualityLevels ( 1469889 ) Я пытаюсь написать только 1400000
Тип содержимого: Фрагменты ( видео = 14795200000) Видео или аудио
HTTP-статус : 200
Всего отправлено байт : 658377
Пользовательский агент: Firefox / 1.5
- Состояние кэша : cs = {STATUS}: HIT (используется кэш), MISS (кэш не используется)
после прочтения этой информации я вставлю их в базу данных mssql.
КАК Я МОГУ ПЕЧАТЬ ИХ?
пытаюсь String pattern = "\\[([\\w:/]+\\s[+\\-]\\d{4})\\] (\\S) \\[(\\w+) ([\\d.]+) ([\\d.]+) (\\w+) (\\w+.*)\\] (\\w.*?\\d{3}) ([\\d.]+) \"([^\"]*)\" \"([^\"]*)\" (\\S) (\\w+) (.*)";
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("String: " + m.group(0) );
System.out.println("IP: " + m.group(1) );
System.out.println("Event time: " + m.group(2) );
System.out.println("Request Method: " + m.group(3) );
System.out.println("Content adress: : " + m.group(4) );
System.out.println("Content name: " + m.group(5) );
System.out.println("Content bitrate i: " + m.group(6) );
System.out.println("Content type: " + m.group(7) );
System.out.println("HTTP Status: " + m.group(8) );
System.out.println("Total sent Bytes: " + m.group(9) );
System.out.println("User Agent: " + m.group(10) );
System.out.println("Cache Status: " + m.group(11) );
} else {
System.out.println("NO MATCH");
}
но это мне не помогает` где моя ошибка в схеме или другие?