Чтение логов технологического журнала
База данных - Технологический журнал
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Так как парсеров логов технологического журнала найти не смог - пришлось писать обработку самому.
Для формирования отчета используется схема компоновки данных - соответственно настраивайте выходную форму как захочется.
Обновление 13.09.2012:
- Переделал код в одну строку. Прирост к скорости чтения до 30%.
Обновление 28.09.2012:
- Алгоритм обработки полностью переписан. Старая версия обработки оставлена на всякий пожарный.
- Значительно увеличена скорость чтения данных.
- Убран индикатор чтения строк. Вместо него добавлено количество обработанных файлов в статус формы.
- Убран заголовок отчета
- Зафиксированы максимальная высота и ширина ячеек.
- Расширен список считываемых событий.
- Период чтения данных расширен до секунд.
- Добавлен флаг "НеСбрасыватьНастройкиСКД". Если он установлен - при чтении файла не сбрасываются настройки компановки, установленные пользователем. При выключенном состоянии в отчет попадают только непустые события.
Обновление 13.09.2012:
- Удалил старую версию обработки (многие путались и скакачивали ее).
- Обновил скриншот.
- Для ленивых добавил версию под 8.2.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
HighLoad оптимизация Инструментарий разработчика Технологический журнал Разработчик 1С 8.3 Россия Абонемент ($m)
Скрипт tj_baseline.py собрал акт замеров из технологического журнала: 7 повторов до и 7 после замены запросов в цикле на «Нано-УТ 2.0». Справка на 150 строк ускорилась с 817,0 до 145,0 мс, проверка доступности с 301,3 до 2,2 мс. При 120 и 300 вызовах в день и ставке 800 руб. выгода 9353 руб. в год по журналу, 4939 руб. по секундомеру без журнала. В архивах скрипт, тесты, журналы опыта, образец приложения к договору и калькулятор.
7 стартмани
27.10.2026 302 Ninel_S 0
HighLoad оптимизация Администрирование СУБД Технологический журнал Системный администратор Разработчик 1С 8.3 Абонемент ($m)
Проверила на стенде совет «сортируйте строки перед записью»: 1С 8.3.27 на PostgreSQL, учебная «Нано-УТ», 20 потоков и по 2000 документов на каждый способ записи движений. Взаимоблокировки дают построчный захват (99 % ошибок) и повышение разделяемой блокировки до исключительной (95 %, сортировка не помогает); одна блокировка на весь набор работает без сортировки. Плюс механика PostgreSQL, дерево ожиданий через pg_blocking_pids, TDEADLOCK в журнале и единицы порога TLOCK в logcfg.xml. В архиве стенд, выгрузка конфигурации и журналы прогона.
5 стартмани
22.10.2026 435 Ninel_S 10
Журнал регистрации Инструменты администратора БД Технологический журнал Мониторинг Системный администратор Разработчик 1С 8.3 1С 8.5 1С:Управление торговлей 11 Абонемент ($m)
Расширение для любой конфигурации на БСП: замеры, ошибки, задания, обмены, блокировки, диски, сеансы и техжурнал в одном окне, с уведомлениями в Telegram и на почту.
3 стартмани
19.10.2026 511 6 windsurf 0
HighLoad оптимизация Технологический журнал Сервера Запросы Системный администратор Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)
Составной отчет формировался 15 минут. Вместо перебора разделов одна команда rac показала, что сеанс занят запросом к СУБД, а временный техжурнал с порогом 20 секунд за один прогон назвал виновника: один SQL на 240 секунд и точную строку модуля. В статье четыре разные картины «висит» и как их различить: идет запрос в СУБД, клиент ждет невидимое модальное окно, зомби-вызов после закрытого клиента, зависшее фоновое задание. Пример logcfg.xml, разбор события DBMSSQL с полем Context, замер пакета запросов по временным таблицам, регламентное задание, которое «выполнено», а данные стоят, и шпаргалка по диагностике.
16.10.2026 1114 Konstmax13 6
Технологический журнал Сервера EDT Обновление 1С Системный администратор Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)
Конфигуратор и агент EDT тихо вылетают на 0 % «Обработки структуры базы данных», EDT пишет «Потеряно соединение с агентом конфигуратора», а модель проекта при этом чистая. Разбор двух аварий на большой серверной базе БП КОРП: какие факты снимать (журнал Windows, техжурнал нужной версии, хвост лога процесса), почему инкрементальная выгрузка EDT ломается после сбоев, как довести обновление пакетно через /UpdateDBCfg -Server, как опознать свои rphost среди нескольких кластеров и снять агент EDT, который сам поднимается и держит базу. Протокол одного дня по минутам и порядок диагностики из восьми шагов.
15.10.2026 496 Konstmax13 0
HighLoad оптимизация Технологический журнал Разработчик 1С:Предприятие 8 Бесплатно (free)
В этой статье рассматривается только первый этап диагностики производительности: как получить длительный SQL-запрос из технологического журнала, связать его с прикладным кодом 1С и точно локализовать место выполнения. Причины длительности и оптимизация самого запроса разбираются уже после локализации.
21.09.2026 1395 markbraer 1
Технологический журнал Системный администратор Разработчик 1С 8.3 Бесплатно (free)
База ERP, 400 пользователей, сервер загружен, 1С подвисает, доступа к SQL Server нет. Оптимизировать можно бесконечно, вопрос в том, с чего начать. ЦУП это платная лицензия и отдельная стройка, а технологический журнал встроен в платформу, включается одним файлом и на боевой базе в рабочее время не вызвал ни одной жалобы от пользователей. Разбираю, что он собой представляет, где лежит настройка, как читается строка события и что означает каждое из одиннадцати событий, которые я видел в журналах боевой ERP. Плюс рабочий logcfg.xml, три ловушки, на которых отчёт получается красивым и неверным, и шесть находок за один прогон.
07.09.2026 2462 nedomolkov.ivan 0
Технологический журнал Системный администратор Разработчик 1С 8.3 Абонемент ($m)
Обработка включает технологический журнал, читает его и отвечает на 13 вопросов человеческим языком: кто блокирует базу, какой запрос к СУБД самый тяжёлый, какой код суммарно грузит СУБД больше всех, какой вызов съедает память. Настройка идёт галочками с человеческими формулировками, logcfg.xml обработка пишет сама, права администратора для этого обычно не нужны. Отдельная кнопка сводит журнал в один markdown-файл: на боевой ERP 288 МБ и 2 055 229 строк ужались в 17 459 знаков, файл кладётся в чат с нейросетью и разбирается за минуту. Имена баз и пользователей в нём заменены псевдонимами. Без внешних компонент, к СУБД обращений нет.
10 стартмани
07.09.2026 1499 6 nedomolkov.ivan 0
| Код |
|---|
{Форма.ФормаОтчета(40)}: Преобразование значения к типу Дата не может быть выполнено
СтрокаТаблДанных.Дата=Дата(ДатаФайлаСтр+Сред(ТекСтрока,1,2)+Сред(ТекСтрока,4,2));
Показать полностью |
Если Сред(Строка,3,1)=":" Тогда
на
Если Сред(Строка,3,1)=":" И Сред(Строка,6,1)="." Тогда
так как в некоторых случаях текст, например запросов, может содержать символ двоеточия.
ТаблДанныхКолонки.Добавить(ИмяКолонки,Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(1000, ДопустимаяДлина.Переменная)),ПредставлениеКолонки);
по причине:
Неверное имя колонки
Могу прислать логи на мыло
1. Переделал общий принцип парсинга строк. К сожелению новый алгоритм немного медленнее старого, но ,по-крайней мере, избавляет от ошибок чтения.
2. Ухожу от идеи обобщения значений параметров от разных событий в одно (они практически все пересекаются)
3. Добавил осмысленную расшифровку параметров.
Список известных мне параметров теперь находится в макете обработки. Если при парсинге параметр в макете не найден - он воспринимается как значение какого то другого параметра. Поэтому, кому не лень - просмотрите макет на выявление лишних или недостающий параметров и сообщите сюда. Я буду редактировать список.
Только вот еще что (в прошлый раз забыл написать): почему у тебя нет такого важного поля, как длительность?
В поей простецкой обработке она получалась так:
Длительность = Число(Сред(ТекСтрока, 7, 4));Получается значение в десятитысячных долях секунды
mm:ss.tttt-d, <наименование>, <уровень>, <ключевые свойства>
· mm — номер минуты в текущем часе;
· ss — номер секунды в текущей минуте;
· tttt — номер десятитысячной доли текущей секунды;
· d — длительность события в десятитысячных секунды;
· <наименование> — наименование события;
· <уровень> — уровень события в стеке текущего потока;
доработал твою обработку на фильтр по периоду на момент чтения файлов ТЖ.
Т.к. обычно нужно смотреть логи, например, за последний час. Понятно что можно было задать фильтр уже после прочтения в настройках СКД, но если логов очень много, то на это тратится время, поэтому удобней установить фильтр при чтении.
А так, спасибо за обработку!
Сэкономил кучу времени на написании чего то подобного.
Если понравится фильтр - может обновить свой дистрибутив)
Широкий,
доработал твою обработку на фильтр по периоду на момент чтения файлов ТЖ.
Т.к. обычно нужно смотреть логи, например, за последний час. Понятно что можно было задать фильтр уже после прочтения в настройках СКД, но если логов очень много, то на это тратится время, поэтому удобней установить фильтр при чтении.
А так, спасибо за обработку!
Сэкономил кучу времени на написании чего то подобного.
Если понравится фильтр - может обновить свой дистрибутив)
Пытался открыть твою. обработку - выбивает ошибку при выполнении файловой операции.
Она случаем не под 8.2?
(66) Автор, если не сложно, сделай пожалуйста, возможность установки интервала более тонкую, до минут(десятков минут). Час это очень много, на больших журналах вываливается километровая портянка. Понимаю что это можно затем отбором фильтровать. Но если есть основной фильтр туда уже не с руки лазить. И мелкая просьба - выбор периода лучше разместить в одной строке с выбором каталога. Для больших журналов на небольших мониторах каждая строчка свободного места нужна.Фраза Печатная форма - тоже отъедает полезную площадь. Как и любые заголовки в самой печатной форме. Кто пользуется тот и так знает что это.
Кроме того обнаружил такую особенность. При чтении большого журнала - 500000 строк, бодро начинает читать, затем замедляется и на 180000 строке останавливается. Проверил на последней и предпоследней версии обработки. Старая версия redlog читает нормально весь журнал. Места на диске много, памяти с большим запасом. Запускал обработку на сервере 1с. Один из процессоров сервера уходит в 100% при этом, там и остается.
Почему то не читает. Указываю интервал. Пишет копирование во временный каталог. Нажимаю сформировать - пустой журнал. 8.1.15
Если журнал пустой - то тут либо на самом деле ничего нет, либо фильтры поставлены неправильно.
На самом деле идеология другая - набор файлов читаем только один раз, а потом отборами фильтруем необходимую выводимую информацию.
Ты же предлагаешь каждый раз эти файлы читать - я считаю это не корректным.
Если напрягает, что при выборе периода сразу формируется отчет - отрежь это сам в коде. Код я не закрывал - переделывайте под себя.
Удивлен что до сих пор кто то юзает мелкие мониторы :)
Поправил обработку - добавил на командную панель кнопку "Панель чтения" - она регулирует видимость настроек.
Насчет замедления чтения - тут скорее всего кончается оперативка и начинает свопирование в виртуалку. Я бы не рекомендовал такие большие объемы считывать - для анализа сложно и комп насилуешь.
Пока Истина Цикл
Строка=ЧтениеТекста.ПрочитатьСтроку();
Если Строка=Неопределено Тогда
Прервать;
КонецЕсли;
КоличествоОбработано=КоличествоОбработано+1;
.......................................
КонецЦикла; ПоказатьПосмотрел старую версию там ты для чтения файл используешь FileSystemObject. Старая версия не виснет.
спасибо за доработку. Большие выборки приходится делать тогда когда нужно посмотреть за неделю аварийные завершения. В журнал кроме аварий пишется и CONN, он занимает больше всего места. А первичное чтение читает всех поголовно в том числе и CONN. Поэтому и получается 500000 строк. Проблема зависания обработки не связана с памятью. Обработка запускается на сервере. Общей памяти на сервере с большим запасом. При работе обработки потребление память на сервере не растет. На сервере запущено несколько rphost. На всех них память распределена примерно равномерно и она очень невелика - 200мб на момент измерений. Свободного места на диске С тоже достаточно. Многократно больше файла подкачки. Как и писал один из процессоров уходит в 100% и там и остается. Приходится снимать аварийно. Посмотрел код - подозрение на вот этот цикл. Еще не проверял, но возможно он из него на каком-то файле не выходит. Строка 131-152. Конкретно 132-133 строки.
Хочешь сказать , что встроенный 1с объект по чтению из потока глючит?
ДобавитьДанныеВТаблицуДанных(СтрокаДанных,ДатаФайлаСтр)
в нее передается строка вида
08:39.3911-0,EXCPCNTX,0,ClientComputerName......
которая имеет огромный размер. В ней идет описание какого-то сумасшедшего запроса, длина которого более 200 тыс.слов
В процедуре входим в цикл(строка 76)
Для НомерСтроки=1 По МногострочнаяЧастьКолСтрок Цикл
.........
И вот тут-то и происходит долгая обработка. В конце концов она его обрабатывает и идет дальше.
Так что претензии которые раньше высказывал в (71) снимаются.
Возможное решение этой проблемы - обрезать строки. Добавить в настройки флаг "Отражать строки сокращенно" и резать по нему длинные строки до каких-то разумных пределов, например 200-500. В отчете все равно такой "сверхзапрос" невозможно просмотреть.
Может для полного счастья отражать в отчете что данная строка отражена сокращенно.
Могу прислать этот лог, если есть желание с ним "побороться".
Широкий, в моем бантике можно было читать логи и за последние 10 минут... Не обязательно кратно 1-му часу.
Дело конечно Ваше, но ИМХО зря сразу делать такое ограничение.
Расскажи, каким же образом? То, что ты сделал период с точностью до сек ничего не меняет :)
Файлы лога хранятся с периодичностью один час.
Чтобы сделать большую точностью, надо уже анализировать не имя файла, а его содержимое - т.е. строки.
А это по ресурсоемкости примерно то же, что и считать один файл без анализа строк но при формировании поставить фильтр на время.
Расскажи, каким же образом? То, что ты сделал период с точностью до сек ничего не меняет
Файлы лога хранятся с периодичностью один час.
Чтобы сделать большую точностью, надо уже анализировать не имя файла, а его содержимое - т.е. строки.
А это по ресурсоемкости примерно то же, что и считать один файл без анализа строк но при формировании поставить фильтр на время.
Сделал фильтр при чтении каждой строки, анализирующий период с точностью до секунды.
Если период не подходит - строка не добавляется в таблицу СКД.
Сделал фильтр при чтении каждой строки, анализирующий период с точностью до секунды. Если период не подходит - строка не добавляется в таблицу СКД.
В твоей обработке этого нет.
И как я описал это раньше - делать это считаю не разумным
Включен Полный технологический журнал. Логи за сутки 24ГБ.
Возникает проблема чтения их.
Первая - долго читает, но это как-то еще можно оправдать.
Вторая - при попытке сформировать отчет - падает с нехваткой памяти.
Пример:
Выбрал интервал один час, прочитал файлы. Память съел 2ГБ.
Указал фильтр - без CONN. Задал фильтр выборки интервала событий - всего 15 минут.
Запустил отчет Сформировать. Память доросла до 3.8Гб и "упала" программа с "нехваткой памяти".
Запускал на сервере (64-разряда) где памяти 16Гб и доступно было 12ГБ. Возможно есть ограничение на размер выделяемой памяти на процесс на сервере, либо это проблема приложения 1с.
Как победить эту проблему? Как читать большие логи?
Считанные данные хранятся в памяти - поэтому такой объем и прочитать и вывести не получится.
В твоем случае надо делать свою базу - туда кидать данные.. А потом запросами получать нужное.
Структуру базы можно глянуть проанализировав обработку
В твоем случае надо делать свою базу - туда кидать данные.. А потом запросами получать нужное.
Возможно в обработке добавить возможность сохранения данных в SQL базу? Потребность в использовании технологических журналов как правило возникает именно на больших базах, с большими логами.
А если хотя бы добавить возможность обработки больших данных кусками: наполнять ТЗ до определенного размера, сбросить их в промежуточный файл, а затем следующий кусок..?
У тебя и так данные в логах сидят.. ты тупо прочитать не можешь.
Возможно в обработке добавить возможность сохранения данных в SQL базу?
Почему именно скуль? Чем отдельная конфигурация на 1с не подходит.
Потребность в использовании технологических журналов как правило возникает именно на больших базах, с большими логами.
Не надо про большие базы..
У нас документооборот 3-5 тыс документов/день. И у меня ни разу не возникало потребностей анализировать кусок лога даже на 50 мегов. Ты просто задолбаешься их читать.
Или делай корректную настройку logcfg.xml - чтобы только нужные события попадали или делай отдельную базу и грузи туда
Для тех кому ЦУП не по корману.
А как ты с помощью нее выявлял проблемы производительности?
Сортируешь по времени выполнения, находишь самые долгие операции.
А если ещё сгрупировать по тексту запроса, тогда ранжировка получаеться.
Она же на СКД настривай как хочешь.
При правильных настройках ТЖ, даже строчку кода указывает и текст запроса в 1с.
Красивых онлайн графиков как ЦУП не рисует, но проблеммный запрос можно и без них найти :)
В инструментах разработчика уже есть кажется более мощное средство "Анализ техножурнала". Оно нацелено как раз на анализ событий EXCP.
Конфигурация очень хорошая, я не спорю. Видно, что потрачено много сил.
Основное отличие в что, реализовано в виде одной обработки, и при этом читаются ВСЕ известные события.
З.Ы. Серега, шБуква это еще "ё" и "Ё"
РВыражение.Pattern="(\d\d:\d\d).(\d+)-(\d+),([a-zA-Z]+),(\d+)(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?(?:,([a-zA-Z:]+)=([\s\S]*?)(?=(?:,[a-zA-Z:]+=|\n\d\d:\d\d)))?";
У Вас, правда, вместо старого (\d\d\d\d) используется (\d+), что на самом деле лишнее, т.к. длина долей секунд не плавающая и составляет всегда 6 символов вместо 4. Я просто добавил \d\d\.
Больше отличий нет, спасибо. Я думал может есть ещё что-то новое, наверняка в ТЖ это появилось а здесь не отражено...
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 19753
Создание 24.04.09 12:32
Обновление 12.09.13 11:34
Просмотры 52533
Загрузки 2148
Рейтинг
297
Комментарии 127
Код открыт Не указано
Рубрики Технологический журнал
Кому
Системный администратор
,
Разработчик
Тип файла Внешний отчет (ert,erf)
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Windows
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)