Вверх ↑
Этот топик читают: Гость
Ответов: 7
Рейтинг: 2
#1: 2009-10-28 16:00:26 ЛС | профиль | цитата
Собственно тема такая
Хочу собрать простой парсер логов программы.
Возникли следующие вопросы:
1. какой компонент ищет внутри фаила(или группа компонентов)
2. Если есть ini фаил в котором есть определенные ключи, которые выдаются в поток, как из потока выделить только определённое значение ключа, для выбранной в программе опции?

Постояльцы помогите пожалуйста
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2009-10-28 16:10:07 ЛС | профиль | цитата
1.

Add(FileStream,15063075,161,168)
{
link(onLoad,1088421:doConvert,[])
}
Add(Convertor,1088421,217,168)
{
Mode=11
link(onResult,9080930:doSearch,[])
}
Add(BlockFind,9080930,273,168)
{
}


2.

Add(Ini,12247732,161,112)
{
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4641
Рейтинг: 334
#3: 2009-10-28 16:10:18 ЛС | профиль | цитата
Position например.
А так покажи лог и расскажи как его распарсить.

zbot писал(а):
только определённое значение ключа,

Ini
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 7
Рейтинг: 2
#4: 2009-10-28 16:38:51 ЛС | профиль | цитата
вот кусок лога
code_15420.txt

таких логов много
Хочу научить программу искать сразу во всех логах, и отсейвать строки с найдеными значениями..
FILE_N_R
FILE_NF
S_FILE
вот чтоб хатябы вот так:
<29.09.2009 21:51:42> [10.1.48.135] (-1) hwID: "S0V3J9DP805369" FILE_N_R: "C:WINDOWSSVCHOST.COM"

сохраняла все найденное в один фаил... такой парсер был бы очень кстати вот что получилось пока что у меня:
code_15421.txt

можно указать директорию, выбранный путь сохранятся в ini в определенный ключ

но как зделать схему поиска внутри всех фаилов это засада..
карма: 0

0
файлы: 2code_15420.txt [1KB] [147], code_15421.txt [1.3KB] [136]
Разработчик
Ответов: 26170
Рейтинг: 2127
#5: 2009-10-28 16:44:37 ЛС | профиль | цитата
zbot писал(а):
но как зделать схему поиска внутри всех фаилов это засада..

Использовать FileSearch и при получении имени файла, тут же его парсить
------------ Дoбавленo в 16.46:
Кстати у StrList-a есть очень интересный метод -- doAppend, советую ознакомиться, если, конечно, не захочется напрямую работать с файловыми потоками
карма: 22

0
Ответов: 7
Рейтинг: 2
#6: 2009-10-28 16:50:12 ЛС | профиль | цитата
Вот что у меня есть


Make(delphi)
ver(4.03 build 180)
Add(MainForm,2953706,7,21)
{
Width=518
Height=350
Font=[Courier New,12,1,0,204]
Caption="myAC Log Parser"
DragForm=0
Position=1
}
Add(FileSearch,12701374,196,105)
{
Ext="*.log"
FullName=1
link(Dir,15551542:Text,[])
}
Add(Ini,14242193,287,35)
{
FileName="settings.ini"
Section="main"
Key="LogPach="
Type=1
}
Add(GVarContainer,6662879,21,245)
{
Section="search"
FilleName="settings.ini"
VarList=#12:FileNotRead=|13:FileNotFound=|15:SuspiciousFile=|
link(onLoad,15063075:doOpen,[])
link(Section,15683344:Selected,[])
}
Add(Browse,13526288,119,42)
{
Title="Укажите папку с логами myAC"
NewDirButton=1
link(onBrowse,15551542:doText,[])
}
Add(Edit,15551542,203,42)
{
Left=5
Top=25
Width=195
Height=25
Text="Укажите путь до папки с логами"
link(onChange,14242193:doWrite,[])
}
Add(Button,1229834,56,42)
{
Left=205
Top=25
Height=25
Caption="Выбрать"
Data=String()
link(onClick,13526288:doBrowse,[])
}
Add(Label,8827408,7,77)
{
Left=5
Top=60
Width=299
Height=25
Font=[Courier New,10,1,0,204]
Caption="теперь укажите тип поисковых данных"
}
Add(RadioButton,15683344,21,175)
{
Left=10
Top=100
Width=95
Caption="FILE_N_R"
}
Add(Button,10700695,126,105)
{
Left=270
Top=25
Height=25
Caption="Искать!"
link(onClick,12701374:doSearch,[])
}
Add(FileStream,15063075,70,245)
{
FileName="settings.ini"
link(onLoad,1088421:doConvert,[])
}
Add(Convertor,1088421,119,245)
{
Mode=11
link(onResult,9080930:doSearch,[])
}
Add(BlockFind,9080930,168,245)
{
ReplaceStr="FileNotRead=1"
StartBlock="FileNotRead="
EndBlock="0"
}
Add(GVarContainer,10440676,21,350)
{
Section="search"
FilleName="settings.ini"
VarList=#12:FileNotRead=|13:FileNotFound=|15:SuspiciousFile=|
link(onLoad,3505657:doOpen,[])
link(Section,9443399:Selected,[])
}
Add(RadioButton,9443399,21,301)
{
Left=10
Top=125
Width=80
Caption="FILE_N_F"
}
Add(FileStream,3505657,70,350)
{
FileName="settings.ini"
link(onLoad,1635656:doConvert,[])
}
Add(Convertor,1635656,112,350)
{
Mode=11
link(onResult,13238260:doSearch,[])
}
Add(BlockFind,13238260,161,350)
{
Delete=0
ReplaceStr="FileNotFound=1"
StartBlock="FileNotFound="
EndBlock="0"
}
Add(GVarContainer,8934404,14,469)
{
Section="search"
FilleName="settings.ini"
VarList=#12:FileNotRead=|13:FileNotFound=|15:SuspiciousFile=|
link(onLoad,1623703:doOpen,[])
link(Section,2253273:Selected,[])
}
Add(RadioButton,2253273,14,406)
{
Left=10
Top=150
Width=65
Caption="S_FILE"
}
Add(FileStream,1623703,70,469)
{
FileName="settings.ini"
link(onLoad,9808947:doConvert,[])
}
Add(Convertor,9808947,126,469)
{
Mode=11
link(onResult,3169714:doSearch,[])
}
Add(BlockFind,3169714,175,469)
{
Delete=0
ReplaceStr="SuspiciousFile=1"
StartBlock="SuspiciousFile="
EndBlock="0"
Point(doEndBlock)
Point(doStartBlock)
}

а как парсить то?

просто нужно что бы поиск вёлся по данным выбранной опции..
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#7: 2009-10-28 17:23:20 ЛС | профиль | цитата
zbot писал(а):
Вот что у меня есть
Бред...
zbot писал(а):
а как парсить то?
так как тебе надо
zbot писал(а):
Хочу собрать простой парсер логов программы.
Что хочешь искать в логах
На всякий случай:
ПАРСИТЬ - автоматически обрабатывать (разбирать) с целью получения нужных данных. ...


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 7
Рейтинг: 2
#8: 2009-10-28 17:27:10 ЛС | профиль | цитата
Tad писал(а):
Что хочешь искать в логах


вот
zbot писал(а):

FILE_N_R
FILE_NF
S_FILE
вот чтоб хатябы вот так:
<29.09.2009 21:51:42> [10.1.48.135] (-1) hwID: "S0V3J9DP805369" FILE_N_R: "C:WINDOWSSVCHOST.COM"


если несложно то можно хотябы пример привести как такое организовать?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#9: 2009-10-28 17:29:18 ЛС | профиль | цитата
и все ???

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 7
Рейтинг: 2
#10: 2009-10-28 17:34:04 ЛС | профиль | цитата
тоесть "и все?"...

Необходимо чтобы все найденное сохронялось в фаил..
Но мне больше интерестно как организовать поиск внутри фаила..
и выбор типа поисковых данных
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#11: 2009-10-28 17:39:25 ЛС | профиль | цитата
zbot писал(а):
Но мне больше интерестно как организовать поиск внутри фаила..

Как-то, вот так



Add(MainForm,12140628,154,119)
{
Width=518
Height=350
Font=[Courier New,12,1,0,204]
Caption="myAC Log Parser"
DragForm=0
Position=1
link(onCreate,5952026:doEvent1,[])
}
Add(FileSearch,12701374,364,203)
{
Ext="*.log"
SubDir=1
FullName=1
link(onSearch,9248766:doEvent1,[])
link(Dir,15551542:Text,[])
}
Add(Ini,14242193,448,133)
{
FileName="settings.ini"
Section="main"
Key="LogPath"
Type=1
}
Add(Browse,13526288,315,140)
{
Title="Укажите папку с логами myAC"
NewDirButton=1
link(onBrowse,15551542:doText,[])
}
Add(Edit,15551542,371,140)
{
Left=5
Top=25
Width=195
Height=25
Text="Укажите путь до папки с логами"
link(onChange,14242193:doWrite,[])
}
Add(Button,1229834,266,140)
{
Left=205
Top=25
Height=25
Caption="Выбрать"
Data=String()
link(onClick,13526288:doBrowse,[])
}
Add(Label,8827408,154,77)
{
Left=5
Top=60
Width=299
Height=25
Font=[Courier New,10,1,0,204]
Caption="теперь укажите тип поисковых данных"
}
Add(RadioButton,15683344,350,406)
{
Left=10
Top=95
Width=95
Caption="FILE_N_R"
link(onSelect,16043851:doEvent1,[])
}
Add(Button,10700695,266,196)
{
Left=270
Top=30
Caption="Искать!"
link(onClick,11658767:doEvent1,[])
}
Add(FileStream,15063075,448,203)
{
link(onLoad,14014708:doWork1,[(521,209)(521,243)(417,243)])
}
Add(BlockFind,9080930,560,266)
{
EndBlock=":"
Point(doStartBlock)
Point(onNotFind)
link(onSearch,11330439:doEvent1,[])
link(onNotFind,11888998:doWork1,[(613,286)])
}
Add(Ini,9120168,329,462)
{
FileName="settings.ini"
Section="search"
Key="FILE_N_R"
link(onResult,15683344:doSelect,[(377,468)(377,501)(305,501)(305,412)])
link(Value,15683344:Selected,[])
}
Add(Hub,16043851,392,406)
{
link(onEvent1,9120168:doWrite,[(420,412)(420,387)(317,387)(317,475)])
link(onEvent2,7613677:doData,[])
}
Add(Hub,9248766,413,203)
{
link(onEvent1,15063075:doOpen,[])
link(onEvent2,15063075:doClose,[])
}
Add(Hub,5952026,217,133)
{
link(onEvent1,14242193:doRead,[])
link(onEvent2,9120168:doRead,[(250,146)(250,468)])
}
Add(DataToFile,5698391,448,266)
{
Type=7
Point(Position)
link(onGet,15846377:doValue,[])
link(Stream,15063075:Stream,[])
}
Add(DoData,7613677,441,413)
{
Data=String(FILE_N_R)
link(onEventData,9080930:doStartBlock,[(545,419)(545,279)])
}
Add(HubEx,14014708,413,273)
{
link(onEvent,5698391:doGet,[])
}
Add(Hub,11330439,616,266)
{
link(onEvent1,5433190:doAdd,[])
link(onEvent2,11888998:doWork2,[(642,279)(642,383)])
}
Add(Memory,15846377,497,266)
{
link(onData,9080930:doSearch,[])
}
Add(ListBox,5433190,679,266)
{
Left=10
Top=125
Width=485
Height=180
link(Str,15846377:Value,[(685,251)(553,251)(553,310)(503,310)])
}
Add(If_else,1739219,455,336)
{
Type=4
link(onFalse,14014708:doWork3,[(499,349)(499,315)(417,315)])
link(Op1,5698391:Position,[])
link(Op2,15063075:Size,[(468,286)(461,286)])
}
Add(HubEx,11888998,609,377)
{
Angle=2
link(onEvent,1739219:doCompare,[(439,383)(439,342)])
}
Add(Hub,11658767,315,196)
{
link(onEvent1,5433190:doClear,[(661,202)(661,279)])
link(onEvent2,12701374:doSearch,[])
}


Поиск в подпапках я отключил, чтобы не шерстить все папки
карма: 22

1
Голосовали:zbot
Ответов: 16884
Рейтинг: 1239
#12: 2009-10-28 17:52:21 ЛС | профиль | цитата
Или так
code_15422.txt
------------ Дoбавленo в 18.06:
nesco, меня уже разворачивающиеся коды достали.
------------ Дoбавленo в 18.13:
zbot, на с "Сохранить"

Add(MainForm,2953706,189,126)
{
Width=803
Height=510
}
Add(ComboBox,707353,595,140)
{
Left=20
Top=40
Width=195
Height=21
Strings=#8:FILE_N_R|7:FILE_NF|7:S_FILE |
DataType=1
Point(EditText)
}
Add(FileSearch,12701374,322,119)
{
Ext="*.log"
link(onSearch,3997954:doAdd,[])
link(Dir,15551542:Text,[])
}
Add(Browse,13526288,245,56)
{
Title="Укажите папку с логами myAC"
NewDirButton=1
link(onBrowse,15551542:doText,[])
}
Add(Edit,15551542,329,56)
{
Left=20
Top=10
Width=195
Height=25
Text="Укажите путь до папки с логами"
}
Add(Button,1229834,182,56)
{
Left=220
Top=10
Height=25
Font=[MS Sans Serif,12,1,0,1]
Caption="..."
Data=String()
link(onClick,13526288:doBrowse,[])
}
Add(ListBox,3997954,392,119)
{
Left=280
Top=10
Width=505
Height=95
DataType=1
Point(String)
link(onClick,9027278:doEvent1,[])
}
Add(Button,14353068,252,196)
{
Left=110
Top=79
Width=75
Font=[MS Sans Serif,8,1,0,1]
Caption="Выбрать"
link(onClick,12526950:doEvent1,[])
}
Add(Memo,7015120,735,217)
{
Left=10
Top=110
Width=775
Height=355
}
Add(Button,10700695,252,119)
{
Left=20
Top=75
Width=75
Height=25
Font=[MS Sans Serif,8,1,0,1]
Caption="Искать"
link(onClick,12701374:doSearch,[])
}
Add(StrList,1114565,511,98)
{
}
Add(ArrayEnum,16182243,525,210)
{
link(onItem,6570781:doCompare,[])
link(Array,1114565:Array,[])
}
Add(StrMask,6570781,679,210)
{
Point(doMask)
link(onTrue,7015120:doAdd,[])
}
Add(FormatStr,4242218,609,217)
{
DataCount=1
Mask="*%1* "
link(onFString,6570781:doMask,[])
link(Str1,707353:EditText,[])
}
Add(Hub,9027278,455,126)
{
link(onEvent1,1114565:doLoad,[])
link(onEvent2,5725266:doWork2,[])
}
Add(Hub,12526950,385,196)
{
OutCount=3
link(onEvent1,5725266:doWork3,[(487,202)])
link(onEvent2,4242218:doString,[(583,209)(583,223)])
link(onEvent3,16182243:doEnum,[])
}
Add(HubEx,5725266,483,133)
{
link(onEvent,7015120:doClear,[(720,139)(720,230)])
}
Add(Button,8670382,252,252)
{
Left=200
Top=80
Width=75
Font=[MS Sans Serif,8,1,0,1]
Caption="Сохранить"
link(onClick,14771025:doExecute,[])
}
Add(SDialog,14771025,609,252)
{
link(onExecute,7015120:doSave,[])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_15422.txt [1.9KB] [159]
Голосовали:zbot
Ответов: 7
Рейтинг: 2
#13: 2009-10-28 18:32:37 ЛС | профиль | цитата
Mad
Огромное спасибо очень помог!

Всем спасибо и плюсики
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#14: 2009-10-28 18:45:51 ЛС | профиль | цитата
Mad это наверно Maestro Tad
карма: 27
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#15: 2009-10-28 18:47:57 ЛС | профиль | цитата
Dilma писал(а):
Maestro Tad

Вау! Круто!
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)