![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с логами
123-ий © (2008-06-25 11:36:00)Как лучше организовать сабж? В том смысле, какими методами его лучше читать и писАть в него каку-либо инфу?
Тын-Дын (2008-06-27 12:07:00) [21]
> Поросенок Винни-Пух © (27.06.08 11:36) [40]
> Есть задачи с большим потоком обработки данных, и операции
> нужно протоколировать, не мешая основной задаче.
> Это и есть прямое назначение.
>
> И каким образом спрошенное у меня количество записей в секунду
> может что-то сказать про это?
Отвеченное количество может помочь оценить эффективность реализации.
Странно, что такой простой вопрос в тупик ставит.
> Игорь Шевченко © (27.06.08 11:47) [42]
>
> > А во всех этих пример и реализациях нагрузочное многопоточное
>
> > тестирование проводилось?
>
>
> На свете существуют разные задачи
Совершенно верно.
> Поросенок Винни-Пух © (27.06.08 11:34) [39]
> У меня не мешает.
см. [42]
Нет, так нет.
Значит, не возникали подобные задачи.
Anatoly Podgoretsky (2008-06-27 11:48:00) [22]> Поросенок Винни-Пух (27.06.2008 11:33:38) [38]
for I := 1 to N do Log(IntToStr(I));
Игорь Шевченко (2008-06-27 11:47:00) [23]
> А во всех этих пример и реализациях нагрузочное многопоточное
> тестирование проводилось?
На свете существуют разные задачи.
Игорь Шевченко (2008-06-27 11:42:00) [24]
> И каким образом спрошенное у меня количество записей в секунду
> может что-то сказать про это?
повод померяться...
Поросенок Винни-Пух (2008-06-27 11:36:00) [25]Есть задачи с большим потоком обработки данных, и операции нужно протоколировать, не мешая основной задаче.
Это и есть прямое назначение.
И каким образом спрошенное у меня количество записей в секунду может что-то сказать про это?
Поросенок Винни-Пух (2008-06-27 11:34:00) [26]У меня не мешает.
Поросенок Винни-Пух (2008-06-27 11:33:00) [27]в одном из фрагментов сегодняшнего лога нашел 21 запись в течении одной секунды. наверное было бы больше, если бы логируемая операция содержала больше шагов.
Тын-Дын (2008-06-27 11:32:00) [28]
> Поросенок Винни-Пух © (27.06.08 11:30) [36]
> Сколько записей в секунду выдерживает
>
> это важно, если стоит задача быстрого наполнения лога все
> равно чем.
Неверно.
Есть задачи с большим потоком обработки данных, и операции нужно протоколировать, не мешая основной задаче.
Это и есть прямое назначение.
Поросенок Винни-Пух (2008-06-27 11:30:00) [29]Сколько записей в секунду выдерживает
это важно, если стоит задача быстрого наполнения лога все равно чем.
у меня такой задачи нет, лог используется по прямому назначению.
Тын-Дын (2008-06-27 11:26:00) [30]
> Поросенок Винни-Пух © (27.06.08 11:09) [34]
> не только тестирование, но и многолетняя эксплуатация
Ну и как с нагрузкой?
Сколько записей в секунду выдерживает и время реакции(время начала/конца обращения к процедуре?).
Поросенок Винни-Пух (2008-06-27 11:09:00) [31]не только тестирование, но и многолетняя эксплуатация
Тын-Дын (2008-06-27 11:08:00) [32]А во всех этих пример и реализациях нагрузочное многопоточное тестирование проводилось?
Поросенок Винни-Пух (2008-06-27 09:36:00) [33]unit LogUnit;
interface
procedure Log(const AMsg : string; const AParam : string = '');
implementation
uses Classes, SysUtils,SyncObjs;
var LogName:string;
cs : TCriticalSection = nil;
procedure Log(const AMsg : string; const AParam : string = '');
var F:Text;
begin
cs.Enter;
Assign(F,LogName);
try
if FileExists(LogName) then Append(F) else Rewrite(F);
Writeln(F,FormatDateTime('dd.mm.yyyy hh:mm:ss',Now),#9,AMsg,#9,AParam);
finally
Close(F);
cs.Leave;
end;
end;
initialization
cs := TCriticalSection.Create;
LogName:=ChangeFileExt(ParamStr(0),'.log');
finalization
cs.Free;
end.
@!!ex (2008-06-27 09:28:00) [34]правда тут не многопоточное действо.
@!!ex (2008-06-27 09:28:00) [35]Я один такой не модный, что у меня 10 строчек логирование? :\
Оно правда на С++, но ниче умного нет на дельфи переделать. Работает мгновенно, даже если сообщения валятся пачками.
static osal::cFile* s_Log;
void loger::Init(const std::string FileName)
{
s_Log = new osal::cFile(FileName,osal::WRITE);
};
void loger::Finish()
{
delete s_Log;
};
void loger::Add(const std::string Text)
{
osal::PrintInConsole(Text+'\n');
s_Log->WriteText(Text);
s_Log->Flush();
};
Anatoly Podgoretsky (2008-06-27 08:38:00) [36]
> 4 года назад тут Панов выкладывал код для ведения лога на
> ~400 строк кода.
Он схалтурил, ему лень было полный код писать.
123-ий (2008-06-27 08:29:00) [37]фигасе. А мне чтение нужно шобы в программу содержимое выводить. Лана, буду сам додумывать. :)
Германн (2008-06-26 21:34:00) [38]4 года назад тут Панов выкладывал код для ведения лога на ~400 строк кода.
:-)
Игорь Шевченко (2008-06-26 21:01:00) [39]
> а что так невесело?
сам посмотри на код
Ega23 (2008-06-26 10:54:00) [40]
> или ты чтение вообще не делал
А нафига мне чтение??? Если чё, мне заказчик этот лог вышлет. А я уже там сам в блокноте разберусь... :)))