Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMS logger / 25 сообщений из 31, страница 1 из 2
03.10.2017, 18:23:33
    #39530448
ktv
ktv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
Проблема возникла с данной технологией логгирования.
Периодически сваливается процесс с ошибкой
Код: sql
1.
EFOpenError: Cannot open file "NNN.log". Процесс не может получить доступ к файлу, так как этот файл занят другим процессом


Сугубо путем экспериментов выяснил, что вероятность падения зависит от интервала между записями в лог. Сделал непрервыную запись - падает почти сразу; сделал интервал в секунду - пока вот висит процесс и капают записи. При этом я файл сам мониторю в онлайне через LogExpert.
Если честно, впервые сталкиваюсь с такой проблемой на практике. По данной ошибке сеть мало что дала, потому вопрос к знатокам:
1) Можно ли что-то сделать с TMS логгером по части данной проблемы?
2) Может, стоить использовать другое средство логгирования. Что-то порекомендуете, желательно, чтобы умело безглючно выводить логгирование нескольких потоков в один файл?
...
Рейтинг: 0 / 0
03.10.2017, 20:44:26
    #39530488
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
я делаю на каждый поток свой файл лога,
чтобы избежать проблем и потом не разгребать мешанину данных из разных потоков.
...
Рейтинг: 0 / 0
03.10.2017, 21:24:46
    #39530500
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
В документанции к этому логгеру написано, что он thread safe... Так что может где-то в другом месте косяк? Например, с тем же LogExpert'ом, который для чтения временно блокирует файл? Или файл большой и его кривой антивирус долго проверяет при каждой записи?
...
Рейтинг: 0 / 0
03.10.2017, 22:21:26
    #39530514
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
ktv Что-то порекомендуете, желательно, чтобы умело безглючно выводить логгирование нескольких потоков в один файл?

Я использую mutex + writeln, несколько процессов (и потоков) пишут в файл.
...
Рейтинг: 0 / 0
04.10.2017, 11:08:52
    #39530631
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
Из логгеров ничего навороченнее SmartInspect не видел.
...
Рейтинг: 0 / 0
04.10.2017, 12:58:54
    #39530712
ktv
ktv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
В общем, победил изменением одного из исходников TMS логгера TMSLoggingUtils.pas путем добавления флага fmShareDenyNone в оба вызова конструктора TFileStream.Create , которые изначально были без них. Конечный код TTMSLoggerUtils.AppendStream:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
unit TMSLoggingUtils;
..
class procedure TTMSLoggerUtils.AppendStream(const AFileName: string; const AStream: TStringStream);
var
  f: TFileStream;
begin
  if FileExists(AFileName) then
    f := TFileStream.Create(AFileName, fmOpenWrite Or fmShareDenyNone)
  else
    f := TFileStream.Create(AFileName, fmCreate Or fmShareDenyNone);

  try
    f.Seek(0, TSeekOrigin.soEnd);
    AStream.SaveToStream(f);
  finally
    FreeAndNil(f);
  end;
end;
...
Рейтинг: 0 / 0
04.10.2017, 12:59:34
    #39530715
ktv
ktv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
Все спасибо :)
...
Рейтинг: 0 / 0
04.10.2017, 13:05:22
    #39530720
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
ktv,

вот тупые тмс-овцы, не могли догадаться что в файл можно одновременно писать из разных потоков.
...
Рейтинг: 0 / 0
04.10.2017, 15:12:49
    #39530823
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
ktvЧто-то порекомендуете, желательно, чтобы умело безглючно выводить логгирование нескольких потоков в один файл?
wlog.pas https://github.com/wadman/wthread
...
Рейтинг: 0 / 0
04.10.2017, 16:14:07
    #39530897
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
Если нужно отлаживать в процессе разработки, то весьма неплох по возможностям штатный CodeSite
...
Рейтинг: 0 / 0
04.10.2017, 16:32:28
    #39530930
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
white_nigger, т.е. в designtime? При не запущенном приложении? Или как?
...
Рейтинг: 0 / 0
04.10.2017, 16:35:26
    #39530935
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
X11т.е. в designtime? При не запущенном приложении?
Это как?
...
Рейтинг: 0 / 0
04.10.2017, 16:43:01
    #39530941
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
X11Или как?До релиза. В процессе поиска багов
...
Рейтинг: 0 / 0
04.10.2017, 16:54:33
    #39530954
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
У CodeSite'а вообще отдельный процесс висит, который принимает все логи в порядке очереди и потом их передает/сохраняет куда надо. Так что там проблем с многопоточностью по определению быть не должно.
...
Рейтинг: 0 / 0
04.10.2017, 19:30:47
    #39531064
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
asviridenkovktv,
вот тупые тмс-овцы, не могли догадаться что в файл можно одновременно писать из разных потоков.

Сарказм понятен, непонятно как за такое ещё и денег хотят (много).
Отдельный поток с монопольным доступом к файлу и синхронизированная запись из других потоков?.. Не, зачем, можно ведь открыть файл, записать и закрыть. А если он уже открыт, то зачем ждать - можно же исключение кинуть. Пипл хавает (С) :)
...
Рейтинг: 0 / 0
04.10.2017, 20:09:11
    #39531083
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
_Vasilisk_X11Или как?До релиза. В процессе поиска баговДа
JaDiУ CodeSite'а вообще отдельный процесс висит, который принимает все логи в порядке очереди и потом их передает/сохраняет куда надо. Так что там проблем с многопоточностью по определению быть не должно.Помимо этого дофига плюшек. Возможность структурирования, сравнение состояния объектов и тд. Можно найти видео где это хорошо показано
...
Рейтинг: 0 / 0
06.10.2017, 13:15:14
    #39532149
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
white_nigger_Vasilisk_пропущено...
До релиза. В процессе поиска баговДабаги есть всегда, можно даже и в продакшне
...
Рейтинг: 0 / 0
06.10.2017, 13:21:43
    #39532159
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
schiиспользую mutex + writeln, несколько процессов (и потоков) пишут в файлиз разных процессов в один мне кажется не приходится а чтобы потоки одного развести (и заодно не тупить вдруг на записи) юзаю lf-очередь и отдельный поток-писатель
...
Рейтинг: 0 / 0
06.10.2017, 13:38:55
    #39532177
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
если из разных потоков струячить всё в один файл, как потом разбираться в этой мешанине ?
...
Рейтинг: 0 / 0
06.10.2017, 13:45:35
    #39532185
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
defecatorесли из разных потоков струячить всё в один файл, как потом разбираться в этой мешанине ?

Например также, как в виндовом Event log
...
Рейтинг: 0 / 0
06.10.2017, 13:47:01
    #39532189
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
vavanschiиспользую mutex + writeln, несколько процессов (и потоков) пишут в файлиз разных процессов в один мне кажется не приходится а чтобы потоки одного развести (и заодно не тупить вдруг на записи) юзаю lf-очередь и отдельный поток-писатель

В моем случае мне важна полнота (у меня некий отладочный протокол), поэтому чем проще, тем лучше.
...
Рейтинг: 0 / 0
06.10.2017, 13:47:58
    #39532191
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
schidefecatorесли из разных потоков струячить всё в один файл, как потом разбираться в этой мешанине ?

Например также, как в виндовом Event log
а я в разные файлы пишу, один файл - один поток.
Потом проще, чем разгребать "как в виндовом Event log"
...
Рейтинг: 0 / 0
06.10.2017, 14:25:31
    #39532252
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
defecatorесли из разных потоков струячить всё в один файл, как потом разбираться в этой мешанине ?например указывать идентификатор потока или чего угодно еще
defecatorя в разные файлы пишуну я тоже в одном приложении несколько независимых лог-файлов веду но разделение логическое
...
Рейтинг: 0 / 0
06.10.2017, 14:32:06
    #39532261
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
schiВ моем случае мне важна полнота (у меня некий отладочный протокол), поэтому чем проще, тем лучшенепонятно как одно связано с другим хотя достоинства принципа самого по себе конечно широко известны
...
Рейтинг: 0 / 0
06.10.2017, 14:37:26
    #39532265
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMS logger
defecatorа я в разные файлы пишу, один файл - один поток.
Потом проще, чем разгребать "как в виндовом Event log"
Зато потом наверное в кайф по десятку файлов хронологию событий восстанавливать?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMS logger / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]