Технологічний журнал
Описано призначення, структуру та налаштування технологічного журналу BAS через файл logcfg.xml. Розглянуто параметри журналу за замовчуванням, формування дампів пам’яті в ОС Windows і Linux та приклади конфігурацій.. Загальна інформація. Конфігураційний файл технологічного журналу. Технологічний журнал за замовчуванням. Структура технологічного журналу. Налаштування формування дампів пам'яті. Приклади файлів налаштування технологічного журналу
Конфігураційний файл технологічного журналу
Технологічний журнал за замовчуванням
Структура технологічного журналу
Налаштування формування дампів пам'яті
Приклади файлів налаштування технологічного журналу
Загальна інформація
Програма BAS дає змогу вести технологічний журнал, до якого надходить інформація від усіх прикладних програм системи.
Технологічний журнал призначений для виявлення помилок, що виникають під час експлуатації системи, діагностики роботи системи службою технічної підтримки розробників, а також аналізу технологічних характеристик роботи системи.
Склад і властивості подій технологічного журналу можуть змінюватися в разі випуску оновлень Framework програми BAS.
Оскільки технологічний журнал є набором текстових файлів, що зберігаються в різних каталогах, розробники можуть використовувати його для аналізу різних режимів роботи програми BAS.
Технологічний журнал може вестися на будь-якому комп'ютері, на якому встановлено програму BAS. За ведення технологічного журналу відповідає конфігураційний файл, у якому описано:
- каталог, у якому зберігатимуться файли технологічного журналу;
- склад інформації, яку буде записано до технологічного журналу;
- час, протягом якого зберігаються файли технологічного журналу;
- параметри дампу, який створюється в разі аварійного завершення програми.
За замовчуванням конфігураційний файл відсутній. Це означає, що технологічний журнал увімкнено та налаштовано на збереження мінімальних дампів у разі аварійного завершення програми в каталог:
%USERPROFILE%\Local Settings\Application Data\1C\1cv8\dumps
Для ОС Windows Vista та новіших версій каталог буде таким:
%LOCALAPPDATA%\1C\1Cv8\dumps
За потреби можна довільно налаштувати технологічний журнал за допомогою окремого конфігураційного файлу. Цей файл має називатися logcfg.xml і розташовуватися в каталозі файлів конфігурації системи.
Примітка
Для роботи технологічного журналу в ОС Windows користувач процесу, який записує технологічний журнал, повинен мати повні права на каталог технологічного журналу та права на читання каталогу-власника каталогу технологічного журналу.
Система автоматично, з періодичністю 60 секунд, перевіряє каталоги конфігураційних файлів на наявність файлу logcfg.xml та аналізує його вміст. Отже, параметри технологічного журналу можна змінювати без перезапуску прикладних програм системи, що працюють.
За певних налаштувань обсяг технологічного журналу може бути досить великим, тому в конфігураційному файлі бажано вказувати час, протягом якого зберігаються файли журналу. Після завершення зазначеного часу система вилучить застарілі файли журналу. Якщо після вилучення застарілих файлів каталог, у якому вони розташовувалися, виявиться порожнім, такий каталог також буде вилучено. Отже, усе дерево каталогів технологічного журналу не міститиме застарілих файлів і папок.
УВАГА!
Якщо система працює в середовищі Linux, формуванням аварійних дампів керують засоби операційної системи. До технологічного журналу записується інформація про факт аварійного завершення процесу та номер сигналу, який спричинив це аварійне завершення.
УВАГА!
Слід враховувати, що каталог технологічного журналу не призначений для зберігання файлів, які не належать до технологічного журналу. Тому не слід розміщувати в ньому дампи або використовувати каталог, який може містити файли, що не належать до технологічного журналу. Якщо в каталозі технологічного журналу є сторонні файли, зазначення каталогу вважається неправильним і технологічний журнал не створюється.
Конфігураційний файл технологічного журналу
У найпростішому вигляді конфігураційний файл може мати, наприклад, такий вміст:
<config xmlns="http://bas-soft.eu/tech-log">
<log location="c:\baf\logs" history="1">
<event>
<eq property="name" value="conn"/>
</event>
</log>
<dump location="c:\baf\dumps" create="1" type="2"/>
</config>
Цей конфігураційний файл визначає таке:
- у технологічному журналі реєструються всі події встановлення та розриву клієнтського з'єднання із сервером;
- файли технологічного журналу розташовуються в каталозі c:\baf\logs;
- файли технологічного журналу зберігаються протягом однієї години;
- файли дампу розміщуються в каталозі c:\baf\dumps;
- файли дампу містять усю доступну інформацію, тобто вміст усієї пам'яті процесу.
За відсутності конфігураційного файлу використовуються такі параметри:
- Технологічний журнал – вимкнений.
- Технологічний журнал за замовчуванням – увімкнений.
- Дампи мінімального розміру.
- Дампи зберігаються в каталозі %USERPROFILE%\Local Settings\Application Data\1C\1Cv8\dumps профілю поточного користувача або %LOCALAPPDATA%\1C\1Cv8\dumps для ОС Windows Vista та новіших версій.
Робота з конфігураційним файлом в ОС Linux практично не відрізняється від роботи в ОС Windows, за винятком таких особливостей:
- Файл має розташовуватися в каталозі файлів конфігурації системи.
- Каталог, у якому формуватиметься технологічний журнал, має бути доступний для запису користувачеві, від імені якого працює прикладна програма (сервер, клієнтські програми, розширення веб-сервера тощо), що записує дані до технологічного журналу.
Технологічний журнал за замовчуванням
Для запису подій, що виникають у критичних ситуаціях з погляду програми BAS, призначений технологічний журнал за замовчуванням. Для цього журналу Framework формує фіксований фільтр подій, який неможливо змінити.
Технологічний журнал за замовчуванням має такі налаштування:
Каталог файлів технологічного журналу за замовчуванням:
- ОС Windows: %USERPROFILE%\Local Settings\Application Data\1C\1Cv8\logs (або %LOCALAPPDATA%\1C\1Cv8\logs для ОС Windows Vista та новіших версій);
- ОС Linux: ~/.1cv8/logs.
- Інформація вилучається з технологічного журналу за замовчуванням через 24 години.
- До технологічного журналу за замовчуванням потрапляють події SYSTEM з рівнем Error.
Зазначені налаштування можна змінити за допомогою елемента <defaultlog>. Налаштування правил формування подій, які реєструються в технологічному журналі за замовчуванням, виконується за допомогою елемента <system>.
Структура технологічного журналу
Технологічний журнал є каталогом, у підкаталогах якого розташовуються файли зі зібраними технологічними даними. Каталог журналу має таку структуру:
<каталог журналу>
<ідентифікатор процесу операційної системи>
<файли журналу одного процесу>
Кожен файл журналу містить події за 1 годину та має ім'я yymmddhh.log, де:
- yy – дві останні цифри року;
- mm – номер місяця;
- dd – номер дня;
- hh – номер години.
Файли журналу мають текстовий формат. Відомості про завершення кожної події записуються у файл з нового рядка.
Наприклад:
16:08.8750-9060,CALL,0,process=rphost,p:processName=DebugControlCenter,t:clientID=221,t:applicationName=Debugger,t:computerName=COMP1,Interface=5cf29e71-ec34-4f01-b7d1-3529a3da6a21,Method=0 16:08.8911-1,DBPOSTGRS,2,process=rphost,p:processName=Database,t:clientID=216,t:applicationName=1CV8,t:computerName= COMP1,t:connectID=125,Usr= User2,Trans=1,dbpid=58152,Sql="SELECT 1::INT8 FROM PG_CLASS WHERE pg_catalog.pg_table_is_visible(OID) AND RELKIND='r' AND RELNAME='params' LIMIT 1",Result=PGRES_TUPLES_OK 16:08.8913-1,DBPOSTGRS,2,process=rphost,p:processName=Database, t:clientID=216,t:applicationName=1CV8,t:computerName= COMP1,t:connectID=125,Usr=User2,Trans=1,dbpid=58152,Sql="SELECT Creation,Modified,Attributes,DataSize,BinaryData FROM Params WHERE FileName = 'ibparams.inf'",Result=PGRES_TUPLES_OK
Рядок завершення події має формат: mm:ss.tttttt-d, <найменування>, <рівень>, <ключові властивості>, де:
- mm – номер хвилини в поточній годині;
- ss – номер хвилини в поточній годині;
- tttttt – номер мікросекунди поточної секунди;
- d – тривалість події в мікросекундах;
- <найменування> – найменування події;
- <рівень> – рівень події у стеку поточного потоку;
- <ключові властивості> – <ключова властивість>, <ключова властивість>, ...
- <Ключова властивість> – <ім'я> = <значення>; <найменування>, <ім'я>, <значення> – довільний текст. Якщо в ньому наявні символи «кінець рядка» або «кома», текст береться в лапки або апострофи, залежно від того, яких символів у рядку менше, а лапки або апострофи в тексті подвоюються.
Налаштування формування дампів пам'яті
Для ОС Windows
Цей розділ містить приклад налаштування файлу конфігурації технологічного журналу (logcfg.xml), потрібного для створення дампів пам'яті аварійного завершення.
<config xmlns="http://bas-soft.eu/tech-log">
<dump location="c:\baf\dumps" create="1" type="3"/>
</config>
За такого налаштування дампи пам'яті формуватимуться в каталозі C:\baf\dumps, а створені дампи міститимуть вміст усієї пам'яті процесу та додатковий сегмент даних.
Користувач, від імені якого працює клієнтська прикладна програма або сервер, повинен мати повні права на каталоги:
- тимчасових файлів;
- технологічного журналу;
- дампів.
Користувач, від імені якого працює клієнтська прикладна програма або сервер, повинен мати право на читання каталогів:
- конфігураційних файлів;
- каталогу-власника каталогу дампів.
Якщо у файлі logcfg.xml налаштовано отримання планів запитів, такий файл має розміщуватися в каталозі конфігураційних файлів відповідної прикладної програми:
- для клієнт-серверного варіанту – у каталозі конфігураційних файлів, доступних серверу BAF;
- для файлового варіанту з прямим підключенням – у каталозі конфігураційних файлів, доступних потрібній версії клієнтської прикладної програми;
- для файлового варіанту з підключенням через веб-сервер – у каталозі конфігураційних файлів, доступних розширенню веб-сервера, що обслуговує цю інформаційну базу.
Для ОС Linux
Цей розділ описує кроки з налаштування операційної системи Linux для забезпечення створення дампів пам’яті в разі аварійного завершення програми.
Примітка
Рекомендації, наведені в цьому розділі, повною мірою застосовні для ОС Fedora Core 4 та її аналогів. Для інших дистрибутивів ОС Linux назва й синтаксис описаних команд можуть відрізнятися. Відомості про це можна знайти в довідковій системі вашого дистрибутива ОС Linux.
За замовчуванням створення дампів аварійного завершення вимкнено. Постачальники дистрибутивів Linux рекомендують вмикати створення дампів лише на комп'ютерах, призначених для розробки, але не на комп'ютерах, що використовуються для реальної роботи програми.
Увімкнення автоматичної генерації дампів
Формування дампів аварійного завершення налаштовується для всіх процесів, що виконуються від імені конкретного користувача. Щоб увімкнути автоматичну генерацію дампів, потрібно додати до файлу /etc/security/limits.conf такі рядки:
<username> soft core unlimited <username> hard core unlimited
Де <username> – ім'я користувача, від імені якого виконується прикладна програма BAS.
Визначення імені та розташування дампів
Щоб деталізувати інформацію про процес, який створив дамп аварійного завершення, а також розмістити дампи в потрібному каталозі диска, рекомендується задати шаблон формування імені дампу. Шаблон можна задавати як у межах однієї сесії, так і на постійній основі.
УВАГА!
Налаштування, описане в цьому розділі, впливає на всі процеси всіх користувачів операційної системи. Це означає, що дампи аварійного завершення інших користувачів, якщо для них увімкнено генерацію, зберігатимуться за вказаним шляхом із вибраним шаблоном імені.
УВАГА!
Описані нижче дії потрібно виконувати від імені користувача root.
Щоб задати шаблон імені та шлях розташування дампів аварійного завершення, потрібно скористатися командою:
sysctl -w kernel.core_pattern=/tmp/core.%e.%p
Це налаштування діятиме до наступного перезавантаження комп'ютера. Воно визначає розміщення дампів у каталозі /tmp і формує ім'я файлів дампів:
- із префіксу core;
- імені програмного файлу;
- ідентифікатора процесу, для якого було сформовано дамп аварійного завершення.
Щоб задати ім'я шаблону та шлях на постійній основі, потрібно додати такий рядок до файлу /etc/sysctl.conf:
kernel.core_pattern=/tmp/core.%e.%p
Щоб зміни, внесені до файлу, набули чинності, потрібно виконати команду:
sysctl -p
Шлях, указаний у налаштуваннях, має бути доступним для запису користувачам, від імені яких працюють прикладні програми, що формують дампи аварійного завершення.
Приклади файлів налаштування технологічного журналу
Наведені нижче приклади передбачають, що програму встановлено стандартним способом до каталогу C:\Program Files\baf.
Важливо враховувати, що за деяких налаштувань до каталогу технологічного журналу можуть виводитися дані дуже великого обсягу. Тому на диску, де планується розміщення файлів технологічного журналу, має бути достатньо вільного місця.
Далі наведено кілька прикладів файлів logcfg.xml, які містять найуживаніші налаштування технологічного журналу.
Технологічний журнал вимкнено
Якщо файл logcfg.xml відсутній у каталозі конфігураційних файлів програми, технологічний журнал не створюється. Якщо файл logcfg.xml потрібний для правильного налаштування дампів, він не повинен містити жодного елемента log. Наведений нижче приклад визначає потребу у створенні повного дампу програми в разі її аварійного завершення. Дампи розміщуються в каталозі C:\baf\dumps.
<config xmlns="http://bas-soft.eu/tech-log">
<dump location="C:\baf\dumps" create="1" type="3"/>
</config>
Повний технологічний журнал
Наведений нижче вміст файлу logcfg.xml визначає виведення до технологічного журналу всіх подій з усіма властивостями. Журнал зберігатиметься протягом тижня (168 годин). Обсяг виведеної інформації при цьому буде дуже великим, проте вона може бути корисною під час аналізу складних нештатних ситуацій. Такі налаштування рекомендується використовувати на етапі тестування та під час розслідування помилок.
<config xmlns="http://bas-soft.eu/tech-log">
<log location="C:\baf\logs" history="168">
<event>
<ne property="name" value=""/>
</event>
<property name="all">
</property>
</log>
</config>
Звернення до СУБД
Наступний файл налаштувань визначає, що технологічний журнал міститиме лише звернення програми до СУБД, а також інформацію про помилкові ситуації. Обсяг виведеної інформації менший, ніж у разі повного технологічного журналу, але також може бути дуже великим.
<config xmlns="http://bas-soft.eu/tech-log">
<log location="C:\baf\logs" history="168">
<event>
<eq property="name" value="dbmssql"/>
</event>
<event>
<eq property="name" value="dbpostgrs"/>
</event>
<event>
<eq property="name" value="db2"/>
</event>
<event>
<eq property="name" value="dboracle"/>
</event>
<event>
<eq property="name" value="excp"/>
</event>
<property name="all">
</property>
</log>
</config>
Дії адміністратора і помилки
Цей файл налаштувань створює технологічний журнал невеликого обсягу, який містить інформацію про запуск і завершення програм, встановлення та розрив з'єднань із кластером серверів BAF, дії адміністратора кластера та помилкові ситуації в роботі системи. Такого журналу в більшості випадків достатньо для розслідування помилкових ситуацій у програмі.
<config xmlns="http://bas-soft.eu/tech-log">
<log location="C:\baf\logs" history="168">
<event>
<eq property="name" value="admin"/>
</event>
<event>
<eq property="name" value="conn"/>
</event>
<event>
<eq property="name" value="excp"/>
</event>
<event>
<eq property="name" value="proc"/>
</event>
<event>
<eq property="name" value="qerr"/>
</event>
<event>
<eq property="name" value="scom"/>
</event>
<property name="all"/>
</log>
</config>
Порівняно з попереднім, наведений нижче файл налаштувань додає всі операції, тривалість яких перевищує 10 секунд. Це може бути корисним для виявлення дій користувачів, які виконувалися тривалий час, наприклад для їх подальшої оптимізації. Тривалість подій виражається в сотнях мікросекунд.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://bas-soft.eu/tech-log">
<dump create="false"/>
<log location="C:\baf\logs" history="168">
<event>
<eq property="name" value="admin"/>
<gt property="duration" value="10000"/>
</event>
<event>
<eq property="name" value="conn"/>
<gt property="duration" value="10000"/>
</event>
<event>
<eq property="name" value="excp"/>
<gt property="duration" value="10000"/>
</event>
<event>
<eq property="name" value="proc"/>
<gt property="duration" value="10000"/>
</event>
<event>
<eq property="name" value="qerr"/>
<gt property="duration" value="10000"/>
</event>
<event>
<eq property="name" value="scom"/>
<gt property="duration" value="10000"/>
</event>
<property name="all"/>
</log>
</config>