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


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

Я использую mutex + writeln, несколько процессов (и потоков) пишут в файл.
...
Рейтинг: 0 / 0
TMS logger
    #39530631
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из логгеров ничего навороченнее SmartInspect не видел.
...
Рейтинг: 0 / 0
TMS logger
    #39530712
ktv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, победил изменением одного из исходников 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
TMS logger
    #39530715
ktv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все спасибо :)
...
Рейтинг: 0 / 0
TMS logger
    #39530720
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ktv,

вот тупые тмс-овцы, не могли догадаться что в файл можно одновременно писать из разных потоков.
...
Рейтинг: 0 / 0
TMS logger
    #39530823
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ktvЧто-то порекомендуете, желательно, чтобы умело безглючно выводить логгирование нескольких потоков в один файл?
wlog.pas https://github.com/wadman/wthread
...
Рейтинг: 0 / 0
TMS logger
    #39530897
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно отлаживать в процессе разработки, то весьма неплох по возможностям штатный CodeSite
...
Рейтинг: 0 / 0
TMS logger
    #39530930
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger, т.е. в designtime? При не запущенном приложении? Или как?
...
Рейтинг: 0 / 0
TMS logger
    #39530935
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11т.е. в designtime? При не запущенном приложении?
Это как?
...
Рейтинг: 0 / 0
TMS logger
    #39530941
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Или как?До релиза. В процессе поиска багов
...
Рейтинг: 0 / 0
TMS logger
    #39530954
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У CodeSite'а вообще отдельный процесс висит, который принимает все логи в порядке очереди и потом их передает/сохраняет куда надо. Так что там проблем с многопоточностью по определению быть не должно.
...
Рейтинг: 0 / 0
TMS logger
    #39531064
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovktv,
вот тупые тмс-овцы, не могли догадаться что в файл можно одновременно писать из разных потоков.

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

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

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

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


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