Skip to content

Commit cf180fb

Browse files
author
lsv
committed
Add Log view in CSV mode
Добавлено окно просмотра лога БД в CSV формате с фильтрами, группами. Описание в Readme.md
1 parent 546d595 commit cf180fb

29 files changed

+3155
-13
lines changed

README.md

+39-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,45 @@ This text Russian language.
133133
В родной схеме, секции как таблицы увидеть нельзя.
134134
* мелкие улучшения
135135

136-
136+
19.08.2021
137+
- добавлено окно просмотра CSV лога базы.
138+
Окно вызывается из контекстного меню сервера "Log view ...".
139+
140+
После открытия окна читается непосредственно файл лога функцией pg_read_binary_file
141+
Выбирается файл с самой свежей датой изменения. Проверка новых сообщений проводиться каждые 5 секунд.
142+
Можно добавить другие сервера на панели "Settings". Настройки применяются после закрытия окна и повторного его открытия.
143+
Если окно лога не активное и приходит сообщения уровня Error и выше, то иконка отмечается красным квадратом.
144+
Если на заладке "Settings" выбрано несколько серверов, то происходить автоматическое подключение к ним.
145+
После подключения все открытые сервера в дереве объектов можно закрыть одной командой контекстного меню
146+
"Disconnect all servers".
147+
ВНИМАНИЕ: память требуемая для хранения логов ни чем не ограничивается (кроме фильтрации на этапе загрузки лога) и
148+
возможно выделения большого количества памяти.
149+
Отображаются строки лога в двух режимах:
150+
* Простой. Отобразаются все полученные строки лога
151+
* Групповой. Строки с похожими сообщениями объединяются в группу и видимой строкой является самая последняя строка
152+
в группе. Для просмотра всех строк группы нужно установить флаг "View detail group".
153+
Сообщения будут похожими если они отличаются только числами и если они не в двойных кавычках.
154+
В групповом режиме в поле host показываются счетчик свежих сообщений попавших в группу. Счетчик сбрасывается при
155+
установке курсора на строку группы.
156+
Для исключения из просмотра ненужных строк используются поколоночные фильтры. Для включения фильтра нужно:
157+
* Щелкнуть правой кнопкой мыши по полю. Для инверсии фильтра нужно удерживать Ctrl.
158+
* Выбрать значение в контекстном меню заголовка колонки. Там отображаются 20 самых частых значения в колонке с указанием
159+
количества этих значений.
160+
* Ввести в поле значения для фильтра, выделить это значение и нажать Enter. Для фильтра используется только выделенный
161+
текст. Такой фильтр будет работать на поиск выделенного вхождения в поле. Если в выделенной строке
162+
первым символом будет "!" то фильтер инверсируется.
163+
* каждое отдельное значение фильтра можно удалить через контекстное меню заголовка колонки.
164+
Для более высокой производительности рекомендуется проводить загрузку логов с включенным "Mode group".
165+
Или сбрасывать "Mode group", но при установленных фильтрах.
166+
Отображение большого число строк (более 10000 ) происходит несколько секунд и более.
167+
* Есть возможность отсеять строки на этапе загрузки. Для этого установите фильтры на строки и нажмите
168+
"Add Filter Ignore" этот фильтр будет записан в файл filter_load.txt.
169+
170+
13.09.2021
171+
- Добавлено меню закрытия всех открытых серверов "Disconnect all servers"
172+
-
173+
174+
137175

138176

139177

db/pgConn.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,8 @@ bool pgConn::HasFeature(int featureNo, bool forceCheck)
548548
wxT(" WHERE proname IN ('pg_tablespace_size', 'pg_file_read', 'pg_logfile_rotate',")
549549
wxT( " 'pg_postmaster_starttime', 'pg_terminate_backend', 'pg_reload_conf',")
550550
wxT( " 'pgstattuple', 'pgstatindex','bt_index_parent_check')\n")
551-
wxT(" AND nspname IN ('pg_catalog', 'public')");
551+
wxT(" AND nspname IN ('pg_catalog', 'public')")
552+
wxT(" union all select current_setting('log_destination'),555,null,null,null");
552553

553554
pgSet *set = ExecuteSet(sql);
554555

@@ -579,7 +580,8 @@ bool pgConn::HasFeature(int featureNo, bool forceCheck)
579580
features[FEATURE_PGSTATINDEX] = true;
580581
else if (proname == wxT("bt_index_parent_check") && pronargs == 2 )
581582
features[FEATURE_PGCHECKINDEX] = true;
582-
583+
else if (proname == wxT("csvlog") && pronargs == 555)
584+
features[FEATURE_CSVLOG] = true;
583585
set->MoveNext();
584586
}
585587
delete set;

0 commit comments

Comments
 (0)