Создать лог файл 1с

Обновлено: 07.07.2024

В статье показаны способы восстановления базы 1С с помощью встроенных в программу инструментов или сторонних приложений . Как создать и восстановить резервную копию базы данных. Для большинства пользователей продуктов компании 1С , повреждение или утеря базы «1С: Предприятие» есть тем, о чём даже боятся говорить. Для них, задача по восстановлению базы данных кажется просто нереальной, а её утеря страшной трагедией.

На самом деле, продукты компании 1С являются таким же программным обеспечением, как и любое другое. Информация, которую пользователи вносят в свои базы данных сохраняется в файлах, из которых можно создавать резервные копии или восстанавливать в случае повреждения или удаления. Часто для этого достаточно встроенных в «1С: Предприятие» инструментов, но и о стороннем программном обеспечении также забывать не стоит.

Файлы базы данных 1С

Для лучшего понимания того, каким образом происходит восстановление повреждённых или утерянных баз 1С, давайте ознакомимся с файлами, в которых они сохраняются.

По умолчанию, каталогом информационной базы, в котором кроме файла самой базы 1С сохраняются все файлы, которые имеют к ней отношение, является папка в Документах пользователя:
C:\Users\Имя Пользователя\Documents\InfoBase

В этой папке хранятся все файлы, которые имеют отношение к данной базе данных.

К таким файлам относятся:

  • *.1CD – файл самой базы данных, который по умолчанию имеет название 1Cv8.1CD. Данный файл включает в себя все данные, которые внесены в базу данных, а также их конфигурацию;
  • *.cf, *.cfu (*.cfl), *.dt, *.epf (*.erf) – конфигурационные файлы базы данных;
  • *.log, *.lgf, *.lgp, *.elf – лог файлы;
  • *.cdn – файл блокировки базы данных 1С;
  • *.efd – архивный файл 1С;
  • *.mft – вспомогательный файл конфигурации шаблона;
  • *.st – файл шаблонов текстов
  • *.mxl – файл печатных форм базы данных 1С;
  • *.grs – файл графических схем базы данных 1С;
  • *.geo – файл географических схем базы данных 1С.

Признаки и причины повреждения базы 1С

Причины повреждения базы 1С могут быть физического или логического происхождения.

Последствия физических причин повреждения баз банных самые тяжелые, так как связаны с повреждением носителя информации, на котором хранятся данные. Это может быть повреждение внешнего или встроенного жесткого диска, оптического носителя информации, флешки или карты памяти. В данном случае, чтобы иметь возможность восстановить базу 1С, необходимо вернуть работоспособность носителю информации.

Логические повреждения баз происходят в результате сбоев в работе программного обеспечения, неправильного или внезапного отключения компьютера или носителя информации, неправильная работа сетевого оборудования, а также вирусы и деятельность вредоносных программ.

Данный проект содержит обработку с интерфейсом логирования похожим на модуль logos.

Мне потребовался простой интерфейс для логирования информации в разные приемники (журнал регистрации, файлы и т.д.). Найденные решения оказались либо громоздкими, либо имели неудобный интерфейс. Хорошим решением оказалась подсистема logos, портированная из OneScript. Но к сожалению она состоит из нескольких объектов, что накладывает ряд ограничений, например: её нельзя подключить как внешний объект/обработку.

В итоге была создана обработка, в которой я постарался реализовать максимально просто программный интерфейс логирования схожий с logos.

Для начала работы с объектом логирования необходимо выполнить его инициализацию следующим образом:

Процедура Инициализировать() является обязательной, в ней производится первоначальная настройка объекта обработки,установка имени лога/события и уровня лога. Если имя лога не задано, то будет использоваться значение по умолчанию - "Логирование".

Уровни логирования и основные методы

В обработке используется 4 уровня логирования (по возрастанию приоритета):

  1. ОТЛАДКА
  2. ИНФОРМАЦИЯ
  3. ПРЕДУПРЕЖДЕНИЕ
  4. ОШИБКА

Уровень логирования можно изменить с помощью метода УстановитьУровень():

Каждому уровню логирования соответствует свой метод вывода информации:

Логирование в журнал регистрации

Для добавления логирования в журнал регистрации используется метод ДобавитьСпособЛогированияЖурналРегистрации().

При логировании в журнал регистрации, можно изменить объект метаданных и данные, к которым привязан лог, с помощью методов: УстановитьДанные() и УстановитьМетаданные():

Логирование в память

Для логирования в память существует вспомогательный метод, который позволяет получить весь лог одной строкой:

Логирование в файл

Для подключения логирования в файл необходимо вызвать метод ДобавитьСпособЛогированияФайл().

ВАЖНО: при завершении логирования в файл рекомендуется освободить захваченные ресурсы используя процедуру Закрыть().

Логирование в базу

ВАЖНО: псевдонимы регистрозависмые и допускается их указание только в верхнем регистре.

Метод Отключить() позволяет выключить логирование, обратное включение осуществляется методом Включить(). Это может быть удобным, если требуется отключить логи на определенном участке кода или полностью отключить их (например, в рабочих базах) без удаления кода логирования.

Использование внешней обработки

Объект логирования можно создать из внешний обработки, что удобно в некоторых ситуациях. Например, при отладке правил обмена КД 2.0.

Логирование в стиле log4j

Функционал logos не повторяет полностью log4j, а, скорее, берет из него какие-то аспекты поведения.

Каждый лог имеет собственное имя, по которому он может быть идентифицирован. Имена логов глобально видимы и любой из них может быть получен по имени лога.

Для того, чтобы начать логирование, требуется вызвать метод ПолучитьЛог модуля Логирование

Соглашение об именовании

Принята следующая схема именования логов:

  • Область - это произвольное имя, определяющее некую совокупность возможных логов. Часто, в качестве области используется имя поставщика приложения, либо имя набора библиотек. Для всех пакетов, входящих в oscript-library используется имя области "oscript". Приложения, создаваемые, например, в рамках гипотетического проекта "Аврора" могут использовать область "aurora".
  • Класс_приложения - это разделитель на тип модуля - библиотека, или приложение. Например, библиотечный пакет "cmdline" использует класс lib , а консольное приложение "gitsync" - класс 'app'
  • Имя_лога - это, собственно, идентификатор журнала.

В отличие от log4j логи в logos не являются иерархическими, но в перспективе могут стать таковыми.

  • Отладка
  • Информация
  • Предупреждение
  • Ошибка
  • Критичная ошибка

По умолчанию установлен уровень "Информация".

Способы вывода (appenders)

В составе logos поставляется 2 способа вывода - в консоль и в файл. Причем, способы вывода - это список, т.е. лог может писаться в несколько мест одновременно.

Особенности добавления Способов вывода

При создании лога в него автоматически будет добавлен способ вывода ВыводЛогаВКонсоль. Однако, если вручную в лог будет добавлен другой способ вывода, то "автоспособ" будет удален. Иными словами, пример кода выше будет писать только в файл, т.к. консольный вывод при ручном добавлении способа вывода будет отключен.

Предусмотрено изменение параметров логирования через специальный файл конфигурации, либо через переменную окружения. Независимо от способа задания настроек, формат настроек остается одинаковым.

Файл конфигурации должен лежать рядом со стартовым скриптом (см. метод СтартовыйСценарий()) и называться logos.cfg. Кроме того, настройки можно задать через переменную окружения LOGOS_CONFIG. Из-за неудобства ввода перевода строк в переменных окружения - в данном случае настройки надо разделять не переводом строк, а точкой-с-запятой. Формат настроек идентичен, независимо от способа задания конфига - в файле или в переменной.

Следует учитывать, что переменная окружения имеет приоритет над файлом, и если задана она, то настройки берутся из нее, файл игнорируется.

Пример задания настроек через командную строку:

Формат настроек логирования

Каждая настройка задается в виде пары ключ=значение . Причем, ключ является составным. Компоненты ключа разделены точками. Первым компонентом ключа идет класс настройки. Предусмотрены 2 класса - logger и appender. Первый отвечает за настройку конкретного журнала. Второй - за настройку способов вывода, используемых журналами.

Настройка журнала (класс logger)

  • имя_журнала - это имя лога, как он описан в вызове метода Логирование.ПолучитьЛог(); , например, oscript.lib.v8runner.
  • СпособыВывода - это список произвольных имен способов вывода, которые привязаны к журналу. Конкретная настройка каждого из заявленных способов вывода выполняется в классе настроек appender.

Например, журнал oscript.lib.v8runner может быть настроен следующим образом:

Корневой журнал (логгер)

Настройка способа вывода (класс appender)

В приведенном примере для лога oscript.lib.v8runner установлен уровень Отладка и заявлено 2 способа вывода. Они названы v8rdebug и console (названия произвольные).

Далее, в конфигурации указаны настройки заявленных способов вывода (аппендеров). Обязательным параметром является класс (тип языка), реализующий способ вывода. В данном примере указаны типы ВыводЛогаВФайл и ВыводЛогаВКонсоль.

Для каждого класса могут потребоваться какие-то свои параметры. Например, класс ВыводЛогаВФайл требует задания свойства file. Свойства способа вывода задаются через точку от имени способа вывода:

Рассмотрим случай, когда log-файл 1С «распух» и занимает значительное место на диске. Сколько? Здесь все зависит от вашей конкретной ситуации.

Например, у вас файловая 1С — когда открываете папку с логами, то можете обнаружить файл *.lgp вполне солидного размера. До нескольких Гб. Это и есть Журнал регистрации 1С:Предприятия.

Возникает закономерный вопрос: «Можно ли его уменьшить или вообще избавиться?». Да, но сначала общие моменты.

Где находятся log-файлы

  • <каталог_ИБ>\1Cv8Log — файловый режим.
  • …/srvinfo/reg_xxxx/<идентификатор_ИБ>/1Cv8Log — клиент-серверный вариант.

Форматы записи журнала

Новый формат ЖР (SQLite, *.lgd) появился в платформе 1С:Предприятия, начиная с версии 8.3.5. При обновлении платформы автоматическая смена формата ЖР не применяется.

Но если вы создаёте новую информационную базу либо пересоздаёте старую с очисткой каталога 1Cv8Log, на 8.3.5 или выше, то при отсутствии 1Cv8.lgf будет создан журнал нового формата.

На большом количестве пользователей новый формат журнала может оказаться хуже старого режима работы.

Как вернуть старый режим журнала регистрации

Для серверных баз:

  1. Остановите службу «Агент сервера 1С:Предприятия 8.3».
  2. Найдите папку 1Cv8Log интересующей вас базы по GUID (…/srvinfo/reg_xxxx/).
  3. Сделайте резервную копию всех файлов в 1Cv8Log в другое расположение. Можно сразу очистить каталог, если журнал не нужен. После копирования — удалите содержимое 1Cv8Log.
  4. Создайте пустой файл 1Cv8.lgf.
  5. Запустите службу «Агент сервера 1С:Предприятия 8.3».

Для файловых баз:

  1. Завершите работу всех пользователей с базой.
  2. Найдите папку 1Cv8Log по адресу файловой ИБ.
  3. Сделайте резервную копию всех файлов в 1Cv8Log в другое расположение. После копирования — очистите содержимое 1Cv8Log.
  4. Создайте пустой файл 1Cv8.lgf.
  5. Откройте файловую ИБ.

При необходимости — повторите шаги для каждой базы.

Рекомендации

  • Для снижения нагрузки полезно уменьшить детализацию логирования. По умолчанию — значение «Регистрировать ошибки, предупреждения, информацию, примечания».


Настройка журнала регистрации
  • Сокращение журнала за счёт удаления устаревших событий, через команду «Сократить». Где указываете дату, до которой требуется удалить события. С возможностью записи удаляемых событий в файл.


Сократить журнал регистрации
  • Включите разделение журнала по периодам, выбрав из списка «Час/День/Неделя/Месяц/Год».
  • С версии 8.3.12 есть возможность интерактивно выбрать формат ЖР. В данном примере предлагается изменить на новый формат SQLite, но рекомендуем все же оставаться на старом.


Изменение формата журнала регистрации на SQLite

Преобразование из SQLite в последовательный формат ↓


Преобразование журнала регистрации в последовательный формат

Особенности нового формата SQLite

В этом режиме настройка «Разделять хранение журнала по периодам» в Конфигураторе отсутствует. Остаётся кнопка «Сократить» для обрезки части журнала и переноса обрезаемых событий в указанный файл.

Одно «но!» — после этого размер 1Cv8.lgd не уменьшается. Для очистки необходимо выполнить команду vacuum.

  • Перед запуском команды обязательно сделайте резервную копию файла 1Cv8.lgd.
  • Второе — он не должен быть «занят»; в файловом режиме — без активных сеансов, для клиент-серверного варианта — при остановленном Агенте 1С.

Для этих целей используется утилита sqlite3, которую можно скачать с официального сайта.

Пример команды (расположение утилиты и lgd-файла у вас могут отличаться):

Читайте также: