SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » логгирование работы
логгирование работы [сообщение #455] Mon, 05 September 2022 11:53 Переход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
Комрады, поделитесь, плз, практическими советами и хитростями по логированию работы БД. Интересуют детали, типа: структура таблицы логов, примеры триггеров и проч.проч.

FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #457 является ответом на сообщение #455] Mon, 05 September 2022 11:58 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 768
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
проще всего подсмотреть у Хвастунова.
у него такая система уже внедрена в IBExpert.
Re: логгирование работы [сообщение #471 является ответом на сообщение #457] Mon, 05 September 2022 17:59 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
ОК, тогда такой вопрос: как из системных таблиц "достать" имя текущей в триггере?

FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #472 является ответом на сообщение #471] Mon, 05 September 2022 18:13 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 768
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
Док
ОК, тогда такой вопрос: как из системных таблиц "достать" имя текущей в триггере?
руками.
Re: логгирование работы [сообщение #473 является ответом на сообщение #472] Mon, 05 September 2022 18:24 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 286
Зарегистрирован: June 2022
Senior Member
Имя текущей чего?
Re: логгирование работы [сообщение #474 является ответом на сообщение #473] Mon, 05 September 2022 18:30 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
sim_84 писал(а) Mon, 05 September 2022 18:24
Имя текущей чего?
И текущей куда?

Док, если просто посмотреть на структуры системных таблиц, масса вопросов отпадёт сама собой. В данном случае - вторая строчка в структуре таблицы rdb$triggers Wink
Re: логгирование работы [сообщение #475 является ответом на сообщение #471] Mon, 05 September 2022 18:45 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 289
Зарегистрирован: August 2022
Senior Member
Док писал(а) Mon, 05 September 2022 17:59
ОК, тогда такой вопрос: как из системных таблиц "достать" имя текущей в триггере?
Из никакой.
Ты пишешь триггер и не знаешь - для какой он таблицы ?
Re: логгирование работы [сообщение #476 является ответом на сообщение #475] Mon, 05 September 2022 18:50 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 768
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
hvlad
Ты пишешь триггер и не знаешь - для какой он таблицы ?
я так полагаю, что это "универсальный триггер".
(шаблон)

зы: мопед не мой, если чо Wink
Re: логгирование работы [сообщение #477 является ответом на сообщение #476] Mon, 05 September 2022 19:33 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
МП писал(а) Mon, 05 September 2022 18:50
hvlad
Ты пишешь триггер и не знаешь - для какой он таблицы ?
я так полагаю, что это "универсальный триггер".
(шаблон)

зы: мопед не мой, если чо Wink
ты оракулом не пробовал подрабатывать? Который раз угадываешь мои хотелки Smile


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #478 является ответом на сообщение #475] Mon, 05 September 2022 19:36 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
hvlad писал(а) Mon, 05 September 2022 18:45
Док писал(а) Mon, 05 September 2022 17:59
ОК, тогда такой вопрос: как из системных таблиц "достать" имя текущей в триггере?
Из никакой.
Ты пишешь триггер и не знаешь - для какой он таблицы ?
тупо в каждой табл в триггере прописывать название евоной таблицы - не по-программистски. Но, если так разрешено, то сделаю так о_О.

зы. думал, щас научат гуманитария старшие товарищи, как тру кодеры код пишут. Заодно узнаю кучу новых терминов. А фиг Smile


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #479 является ответом на сообщение #474] Mon, 05 September 2022 19:40 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
Старый Плюшев писал(а) Mon, 05 September 2022 18:30

Док, если просто посмотреть на структуры системных таблиц, масса вопросов отпадёт сама собой. В данном случае - вторая строчка в структуре таблицы rdb$triggers Wink
Спасибо, Алексан Владимыч, от нынешней братии такой душевной подсказки не дождесси - все норовят разраженно подколоть. Хотел слентяйничать - теперь уж опять туда полезу, пока не выучу все поля наизусть Smile


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #480 является ответом на сообщение #478] Mon, 05 September 2022 19:57 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 289
Зарегистрирован: August 2022
Senior Member
Этот вопрос появляется каждый раз, когда в очередной раз начинают изобретать этот велосипед.
Ответ не меняется годами.


ЗЫ масло - масляное
Smile
Re: логгирование работы [сообщение #481 является ответом на сообщение #476] Mon, 05 September 2022 20:01 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 289
Зарегистрирован: August 2022
Senior Member
МП писал(а) Mon, 05 September 2022 18:50
hvlad
Ты пишешь триггер и не знаешь - для какой он таблицы ?
я так полагаю, что это "универсальный триггер".
(шаблон)
Это и не подлежало сомнению. Штука в том, что "универсальный" он только до момента применения
(инстанциирования) шаблона.
И почему-то авторам не приходит в голову что, хотя имя таблицы в заголовке триггера уже является пар-ром
шаблона, они почему-то считают "некомильфо" использовать этот же пар-р в теле триггера.
Я никогда не мог этого понять...

ЗЫ я не ругаюсь, если что
Re: логгирование работы [сообщение #482 является ответом на сообщение #481] Mon, 05 September 2022 21:01 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
Док, а, кстати, сакраментальный вопрос контрразведчика - с какой целью интересуетесь? В смысле что хочешь с лога поиметь?
Re: логгирование работы [сообщение #485 является ответом на сообщение #482] Tue, 06 September 2022 05:13 Переход к предыдущему сообщениюПереход к следующему сообщению
fraks в настоящее время не в онлайне  fraks
Сообщений: 108
Зарегистрирован: June 2022
Географическое положение: Новосибирск
Senior Member
У меня есть несколько систем логирования, наиболее общая и понятная - это логирование таблиц справочников, у которых первичный ключ - ID и он идентифицирует объект.
Т.е. когда нам интересна история изменения объекта - то идентификатор этого объекта - ID.

Сам лог сделан вот так.

CREATE GENERATOR GEN_LOGS_ID;

CREATE TABLE LOGS (
    ID       INTEGER NOT NULL,
    TNAME    VARCHAR(31),
    FNAME    VARCHAR(31),
    ID_SRC   INTEGER,
    A        CHAR(1),
    VAL      VARCHAR(1000),
    VAL_OLD  VARCHAR(1000),
    A_DT     TIMESTAMP default current_timestamp,
    A_USER   VARCHAR(32) default current_user,
    A_IP     VARCHAR(253),
    A_EXE    VARCHAR(253)
);

ALTER TABLE LOGS ADD CONSTRAINT LOGS_PK PRIMARY KEY (ID);

CREATE INDEX LOGS_A_DT   ON LOGS (A_DT);
CREATE INDEX LOGS_FNAME  ON LOGS (FNAME);
CREATE INDEX LOGS_ID_SRC ON LOGS (ID_SRC);
CREATE INDEX LOGS_TNAME  ON LOGS (TNAME);


SET TERM ^ ;

CREATE OR ALTER TRIGGER LOGS_BI_ID FOR LOGS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_logs_id,1);
end
^

CREATE OR ALTER TRIGGER LOGS_BI_IP FOR LOGS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  --
  -- Вставка IP вносившего изменение
  --
  select rdb$get_context('SYSTEM', 'CLIENT_ADDRESS')
    from rdb$database
    into NEW.a_ip;
end
^

SET TERM ; ^

COMMENT ON TABLE LOGS IS
'Лог справочников.
Для фиксирования изменений в таблицах где есть primary key(id)';

COMMENT ON COLUMN LOGS.TNAME   IS 'Имя таблицы - источника';
COMMENT ON COLUMN LOGS.FNAME   IS 'Имя поля в таблице-источнике';
COMMENT ON COLUMN LOGS.ID_SRC  IS 'Первичный ключ записи в таблице-источнике';
COMMENT ON COLUMN LOGS.A       IS 'Action (I/U/D)';
COMMENT ON COLUMN LOGS.VAL     IS 'Новое значение в логируемом поле';
COMMENT ON COLUMN LOGS.VAL_OLD IS 'Старое значение в логируемом поле';
COMMENT ON COLUMN LOGS.A_DT    IS 'Дата-время изменения';
COMMENT ON COLUMN LOGS.A_USER  IS 'Кто изменил';
COMMENT ON COLUMN LOGS.A_IP    IS 'С какого IP было изменение';
COMMENT ON COLUMN LOGS.A_EXE   IS 'Из какой программы были изменения.';
А на таблицах которые нужно логировать делается такого плана триггеры.
Тест триггера получается широковат, но если строки заворачивать то очень сильно страдает читаемость.
В нормальном редакторе или в IBExpert на мониторе FullHD получается вполне удобно.

ID, понятное дело, в этих таблицах не меняется, просто я не стал делать исключение для этого поля.

SET TERM ^ ;

CREATE OR ALTER TRIGGER SPUB_AIUD_LOGS FOR SPUB
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
as
declare variable vtname  varchar(31);
declare variable va      char(1);
declare variable vid_src integer;
begin
  --
  -- Логирование изменений
  --
  if (gen_id(GEN_SW_LOGS_SPUB, 0) = 0) then exit;
  --
  vtname = 'SPUB';
  --
  if (inserting) then begin va = 'I'; vid_src = new.id; end else
  if (updating ) then begin va = 'U'; vid_src = old.id; end else
  if (deleting ) then begin va = 'D'; vid_src = old.id; end
                 else begin va = '?'; vid_src = null;   end
  --
  -- обработка полей
  --
  if ((updating and new.id           is distinct from old.id          ) or inserting or deleting) then insert into logs(tname, fname, a, id_src, val_old, val) values(:vtname, 'ID'            , :va, :vid_src, old.id   , new.id          );
  if ((updating and new.name         is distinct from old.name        ) or inserting or deleting) then insert into logs(tname, fname, a, id_src, val_old, val) values(:vtname, 'NAME'          , :va, :vid_src, old.name , new.name        );
  --
end
^

SET TERM ; ^
В программе в контекстном меню справочников есть пункт "История" - вызываем стандартное окошко просмотра лога, передавая ему в параметре ID и название таблицы.
В самом окошке, если интересует история конкретного поля, можно дополнительно зафильтровать.

Для примера взят очень простой справочник, а есть такие где например 50 полей. Триггер увеличивается, главное не забыть при модификации таблицы поменять и триггер.
Т.к. у меня все базы одинаковой структуры, а логирование не везде имеет смысл - то сделано отключение логирования, через значения в соответствующем генераторе. Способ не очень корректный т.к. доступ к генераторам есть у всех.

Т.к. лог растет довольно быстро, я примерно раз в год делаю выгрузку старых записей во внешнюю базу архивов логов, оставляя в рабочей базе логов за последние 2 года.
В окне просмотра лога есть возможность посмотреть историю как из рабочей так и из архивной базы логов.

Из минусов - все значения приведены к строке, не поддерживаются блобы. Но на практике это мне еще ни разу не мешало.
Re: логгирование работы [сообщение #486 является ответом на сообщение #485] Tue, 06 September 2022 05:22 Переход к предыдущему сообщениюПереход к следующему сообщению
fraks в настоящее время не в онлайне  fraks
Сообщений: 108
Зарегистрирован: June 2022
Географическое положение: Новосибирск
Senior Member
Вот так выглядит лог свойств документа в этой таблице.

+----+-----------------------+-----------+--------------+---------+-----------+---+---------------+-----------------+--------------------------+
| DB | Дата время            | IP-адрес  | Пользователь | Таблица | ID        | A | Поле          | Старое значение | Новое значение           |
+----+-----------------------+-----------+--------------+---------+-----------+---+---------------+-----------------+--------------------------+
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | ID            | <null>          | 1544265                  |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | NDOK          | <null>          | 1827602                  |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IO            | <null>          | F                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | OPER          | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | TYPE_         | <null>          | 1                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDPOST        | <null>          | 13420                    |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDHEAD        | <null>          | 85                       |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDHEAD_G      | <null>          | 85                       |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDHEAD2       | <null>          | 5011                     |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDHEAD2_G     | <null>          | 5011                     |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDACCAGR      | <null>          | 22120                    |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | SUMM_MODE     | <null>          | 1                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DATA          | <null>          | 2022-09-05 00:00:00.0000 |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DATA_PAY      | <null>          | 2022-09-05 00:00:00.0000 |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DATA_DEB      | <null>          | 2022-09-05 00:00:00.0000 |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | NSKLAD        | <null>          | -104                     |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | NDOK2         | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC          | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC1         | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC2         | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC3         | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC4         | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC_D        | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC_ROUND    | <null>          | 1                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC_BUH      | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | DISC_BUH0     | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDEMP1        | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IDEMP2        | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | MSG           | <null>          |                          |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | SKL           | <null>          |                          |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | TRANSIT       | <null>          | F                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | TRANSIT_KA    | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | ESEND         | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | ERECV         | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | SF_D          | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | TN_D          | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | SF_N          | <null>          |                          |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | TN_N          | <null>          |                          |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | RESERVE       | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | SHOP_N        | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | SHOP_TYPED    | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | PAYMODE       | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IM            | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | IMR_NORD      | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | LCK           | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | LCK2          | <null>          | 0                        |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | NORD          | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | RET_DATA_SALE | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | RET_T_MINUS   | <null>          | <null>                   |
| W  | 2022-09-05 - 08:52:23 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | I | H2_STATUS     | <null>          | <null>                   |
| W  | 2022-09-05 - 08:53:50 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | IDEMP1        | 0               | 15                       |
| W  | 2022-09-05 - 08:53:50 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | IDEMP2        | 0               | 272                      |
| W  | 2022-09-05 - 08:53:50 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | MSG           |                 | гот                      |
| W  | 2022-09-05 - 08:54:12 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | DISC          | 0               | -30                      |
| W  | 2022-09-05 - 08:54:12 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | DISC1         | 0               | -30                      |
| W  | 2022-09-05 - 08:54:12 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | DISC2         | 0               | -30                      |
| W  | 2022-09-05 - 08:54:12 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | DISC3         | 0               | -30                      |
| W  | 2022-09-05 - 08:54:12 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | DISC4         | 0               | -30                      |
| W  | 2022-09-05 - 08:55:52 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | SF_D          | <null>          | 2022-09-05 00:00:00.0000 |
| W  | 2022-09-05 - 08:55:52 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | TN_D          | <null>          | 2022-09-05 00:00:00.0000 |
| W  | 2022-09-05 - 08:55:52 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | SF_N          |                 | 248/15                   |
| W  | 2022-09-05 - 08:55:52 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | TN_N          |                 | 248/15                   |
| W  | 2022-09-05 - 08:56:12 | 10.0.0.9  | USER12       | BDOK    | 1 544 265 | U | MSG           | гот             | гот счет 1082            |
| W  | 2022-09-05 - 09:02:30 | 10.0.0.60 | USER12       | BDOK    | 1 544 265 | U | TYPE_         | 1               | 0                        |
+----+-----------------------+-----------+--------------+---------+-----------+---+---------------+-----------------+--------------------------+
Re: логгирование работы [сообщение #487 является ответом на сообщение #486] Tue, 06 September 2022 05:27 Переход к предыдущему сообщениюПереход к следующему сообщению
fraks в настоящее время не в онлайне  fraks
Сообщений: 108
Зарегистрирован: June 2022
Географическое положение: Новосибирск
Senior Member
Еще ведутся логи коннектов, лог печати документов, лог экспорта в бухгалтерию, лог изменения остатков, лог запросов от информационных киосков и т.п.
Это уже все разной конструкции логи.
Re: логгирование работы [сообщение #490 является ответом на сообщение #487] Tue, 06 September 2022 14:35 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
@fraks

Володя, спасибо. Как всегда, основательно Smile Есть, над чем подумать


@Старый Плюшев

С целью кто и что удалил из данных, если что Smile

Вообще-то, в этот раз я спланировал архитектуру так, что записи физически не удаляются, а помечаются "удаленными" (физически удалить их может только DBA). А логи только помогут найти виновных. Просто есть пару заказов от мелких клиник, там потеря данных критична


@hvlad

У меня как раз есть желание избежать велосипедостроительства. И твои дельные советы оказали бы мне более существенную помощь, чем сарказм Wink



FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/

[Обновления: Tue, 06 September 2022 14:36]

Известить модератора

Re: логгирование работы [сообщение #491 является ответом на сообщение #490] Tue, 06 September 2022 14:43 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 328
Зарегистрирован: August 2022
Senior Member
Док писал(а) Tue, 06 September 2022 13:35
в этот раз я спланировал архитектуру так, что записи физически не удаляются, а помечаются "удаленными"
А ты уже спланировал архитектуру так, чтобы каждый пользователь ходил под собственным логином и никто не мог работать под соседским?..
Re: логгирование работы [сообщение #492 является ответом на сообщение #490] Tue, 06 September 2022 15:13 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 768
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
Док
Вообще-то, в этот раз я спланировал архитектуру так, что записи физически не удаляются, а помечаются "удаленными" (физически удалить их может только DBA). А логи только помогут найти виновных. Просто есть пару заказов от мелких клиник, там потеря данных критична
там где помечаешь запись "удалённой", там же и помечай КТО и КОГДА.
я же показывал как.
полное логгирование всего и вся в большинстве случаев нафиг не нужно.

[Обновления: Tue, 06 September 2022 15:16]

Известить модератора

Re: логгирование работы [сообщение #493 является ответом на сообщение #492] Tue, 06 September 2022 15:41 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
МП писал(а) Tue, 06 September 2022 15:13
Док
Вообще-то, в этот раз я спланировал архитектуру так, что записи физически не удаляются, а помечаются "удаленными" (физически удалить их может только DBA). А логи только помогут найти виновных. Просто есть пару заказов от мелких клиник, там потеря данных критична
там где помечаешь запись "удалённой", там же и помечай КТО и КОГДА.
я же показывал как.
полное логгирование всего и вся в большинстве случаев нафиг не нужно.
Я бы жёстче сказал - действие сплошного логирования на базу сильно смахивает на действие пачки дрожжей на выгребную яму дачного сортира Very Happy И как раз для мелких клиник это действие может оказаться критичнее случайной потери пары записей, от повреждений базы лог внутри неё никак не спасает. А требования к диску и к администрированию растут.
Re: логгирование работы [сообщение #500 является ответом на сообщение #490] Tue, 06 September 2022 17:40 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 289
Зарегистрирован: August 2022
Senior Member
Док писал(а) Tue, 06 September 2022 14:35

@hvlad

У меня как раз есть желание избежать велосипедостроительства. И твои дельные советы оказали бы мне более существенную помощь, чем сарказм Wink

Цель "сарказма" ровно одна - заставить думать над собственными действиями.
И это часто лучше, чем готовые рецепты.
Я так считаю.

[Обновления: Tue, 06 September 2022 17:42]

Известить модератора

Re: логгирование работы [сообщение #501 является ответом на сообщение #500] Tue, 06 September 2022 18:11 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
SD
А ты уже спланировал архитектуру так, чтобы каждый пользователь ходил под собственным логином и никто не мог работать под соседским?..
Я тоже скучал по тебе, Дим Smile


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #502 является ответом на сообщение #500] Tue, 06 September 2022 18:14 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
hvlad писал(а) Tue, 06 September 2022 17:40
Док писал(а) Tue, 06 September 2022 14:35

@hvlad

У меня как раз есть желание избежать велосипедостроительства. И твои дельные советы оказали бы мне более существенную помощь, чем сарказм Wink

Цель "сарказма" ровно одна - заставить думать над собственными действиями.
И это часто лучше, чем готовые рецепты.
Я так считаю.
Золотые слова, Юрий Венедиктович! (С)
Re: логгирование работы [сообщение #503 является ответом на сообщение #500] Tue, 06 September 2022 18:15 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
hvlad

Цель "сарказма" ровно одна - заставить думать над собственными действиями.
И это часто лучше, чем готовые рецепты.
Я так считаю.
Думать можно по-разному. В моем случае - либо изобретать велосипед, либо воспользоваться чужим опытом. КМК, ответ очевиден. В противном случае, я в результате думалки писал бы свой движок БД, а не пользовался готовым Twisted Evil


МП
там где помечаешь запись "удалённой", там же и помечай КТО и КОГДА.
я же показывал как.
полное логгирование всего и вся в большинстве случаев нафиг не нужно.
дак уже есть, но не хочется останавливаться на достигнутом


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #504 является ответом на сообщение #493] Tue, 06 September 2022 18:19 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
Старый Плюшев
Я бы жёстче сказал - действие сплошного логирования на базу сильно смахивает на действие пачки дрожжей на выгребную яму дачного сортира Very Happy И как раз для мелких клиник это действие может оказаться критичнее случайной потери пары записей, от повреждений базы лог внутри неё никак не спасает. А требования к диску и к администрированию растут.
Убедительный довод. Особенно в плане администрирования.


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Re: логгирование работы [сообщение #505 является ответом на сообщение #503] Tue, 06 September 2022 18:23 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
Док писал(а) Tue, 06 September 2022 18:15

Думать можно по-разному. В моем случае - либо изобретать велосипед, либо воспользоваться чужим опытом. КМК, ответ очевиден.
Безусловно! Но и чужой опыт можно подавать либо как сделать что внимающему взбрендило, либо как выбирать путь к достижению цели взвешивая за и против у возникающих идей вместе с побочными эффектами. Вообще построение дерева целей - 80% работы системотехника, в смысле архитектора систем. Но и конкретика тоже полезна, дьявол, как известно, скрывается в деталях.
Re: логгирование работы [сообщение #518 является ответом на сообщение #505] Wed, 07 September 2022 12:42 Переход к предыдущему сообщениюПереход к следующему сообщению
МорскойДесант в настоящее время не в онлайне  МорскойДесант
Сообщений: 188
Зарегистрирован: September 2022
Senior Member
Док, ты логируй критически важные документы, а не таблички.
На уровне клиентского приложения, не на уровне базы. Тогда можно будет логировать не только модификацию данных, но факт обращения к данным (построение отчета, например).
Заведи табличку (или даже базу) - помойку, в которую сливай интересные с твоей точки зрения факты и данные.
В табличке поля: момент времени, типа события, тип документа, пользователь, и блоб - поле для текста (json, например, сжатый zip-ом). И сделай простой браузер для просмотра.
Re: логгирование работы [сообщение #530 является ответом на сообщение #518] Wed, 07 September 2022 23:28 Переход к предыдущему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 98
Зарегистрирован: June 2022
Member
МорскойДесант писал(а) Wed, 07 September 2022 12:42
Док, ты логируй критически важные документы, а не таблички.
На уровне клиентского приложения, не на уровне базы.
Ну, это уж черезчур о_О. Придется писать клиента с признаками ИИ (а как еще узнать, какие документы критичны), а это уже по критериям РСН будет являться медицинским изделием со всеми вытекающими отсюда бюрократическими процедурами.

Решил оставить все как есть (выше МП озвучил): логирование в каждой табле свое - и база зря не растет, и дрожжи в моорозилке Smile


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
Предыдущая тема: Статья: Переменные окружения, служебные и временные файлы в СУБД Firebird
Следующая тема: UDR selective procedure - not empty result set
Переход к форуму:
  


Текущее время: Thu Mar 28 11:40:09 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01157 секунд