Имя: Пароль:
1C
1С v8
Помогите разобраться с настройками logcfg.xml (Для тех. журнала)
0 Alex_MA
 
28.05.14
17:57
Здравствуйте!

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

Эксперимент хочу провести на событии "dbmssql" - Исполнение операторов SQL СУБД Microsoft SQL Server;
http://www.pictureshack.ru/view_86282_p1.png

Данное событие имеет ряд свойств:

context - Контекст исполнения;
dbpid - Строковое представление идентификатора соединения сервера системы «1С:Предприятие» с сервером баз данных в терминах сервера баз данных;
duration - Длительность события в десятитысячных долях секунды;
func - Наименование выполняемого действия;
lka - Признак того, что поток является виновником транзакционных блокировок СУБД;
lkaid - Список номеров запросов к СУБД, «кто кого заблокировал», обнаруживших в течение события, что поток является виновником блокировок. Например, ‘271,273,274’;
lkato - Время в секундах, прошедшее с момента обнаружения, что поток является виновником блокировок;
lkp - Признак того, что поток является жертвой транзакционной блокировки СУБД;
lkpid - Список номеров запросов к СУБД, «кто кого заблокировал», обнаруживших в течение события, что поток является жертвой блокировок. Например, ‘271,273,274’.;
lkpto - Время в секундах, прошедшее с момента обнаружения, что поток является жертвой блокировки;
lksrc - Номер соединения виновника блокировки, если поток является жертвой;
name - имя события;
p:processname - Имя серверного контекста, который обычно совпадает с именем информационной базы;
plansqltext - План выполненного SQL запроса, построенный сервером баз данных (текст запроса расположен в свойстве "SQL");
process - Наименование приложения, как его представляет операционная система (имя файла загрузочного модуля приложения);
rows - Количество полученных записей базы данных;
rowsaffected - Количество измененных записей базы данных;
sessionid - Номер сеанса;
sql - Текст оператора SQL;
t:applicationname - Идентификатор приложения, установившего соединение;
t:clientid - Номер TCP соединения между процессами системы «1С:Предприятие»;
t:computername - Имя компьютера процесса, установившего соединение;
t:connectid - Номер соединения с информационной базой;
usr - Имя пользователя информационной базы;

Вначале выбрал все свойства события к записи в логи:
http://www.pictureshack.ru/view_26187_p2.png

В результате сформировался вот такой файл технологического журнала:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">;
<dump create="false"/>
<log location="E:\LOG_1C_TLOCKS" history="168">
  <event>
   <eq property="name" value="dbmssql"/>
  </event>
  <property name="all">
   <event>
    <eq property="name" value="dbmssql"/>
   </event>
  </property>
</log>
</config>

Здесь я не могу понять для какой цели сформирован второй раз event "dbmssql" после регистрации всех свойств, т.е. после  <property name="all">?
Ну да ладно. Закидываю этот файл в C:\Program Files\1cv82\8.2.19.83\bin\conf

В результате пошел сбор данных:
http://www.pictureshack.ru/view_85785_p3.png

Открываем файл с логами:

53:29.5963-7,DBMSSQL,4,process=rphost,p:processName=ComR_test,t:clientID=65282,t:applicationName=BackgroundJob,t:connectID=277648,SessionID=62638,Usr=DefUser,Trans=1,dbpid=373,Sql="SELECT spid, blocked FROM master..sysprocesses WHERE blocked > 0 AND lastwaittype LIKE 'LCK_%'",Rows=0,RowsAffected=0
53:29.5965-1,DBMSSQL,4,process=rphost,p:processName=ComR_test,t:clientID=65282,t:applicationName=BackgroundJob,t:connectID=277648,SessionID=62638,Usr=DefUser,Trans=1,dbpid=373,Sql=BEGIN TRANSACTION
53:29.5967-5,DBMSSQL,5,process=rphost,p:processName=SA_MainStrg,t:clientID=65279,t:applicationName=BackgroundJob,t:connectID=277644,SessionID=1183318,Usr=esbuser,Trans=1,dbpid=100,Sql='UPDATE T1 SET _MessageNo = ?
FROM _InfoRgChngR27615 T1
WHERE T1._NodeTRef = ? AND T1._NodeRRef = ? AND T1._MessageNo IS NULL
p_0: 1N
p_1: 0x00008F99
p_2: 0x88B5000C29F2DCAE11E32C0087EE1D85
',Rows=0,RowsAffected=0,Context='
ОбщийМодуль.vscESBСобытияШины.Модуль : 54 : ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ВыборкаУзлов.Ссылка, 1);'
53:29.5974-2,DBMSSQL,5,process=rphost,p:processName=ComR_test,t:clientID=65282,t:applicationName=BackgroundJob,t:connectID=277648,SessionID=62638,Usr=DefUser,Trans=1,dbpid=373,Sql="Select count(*) from sysobjects where name='DBChanges'",Rows=1
53:29.5976-3,DBMSSQL,5,process=rphost,p:processName=SA_MainStrg,t:clientID=65279,t:applicationName=BackgroundJob,t:connectID=277644,SessionID=1183318,Usr=esbuser,Trans=1,dbpid=100,Sql='SELECT
T1._Period,
T1._Fld25779RRef
FROM _InfoRgChngR27615 T1
WHERE T1._NodeTRef = ? AND T1._NodeRRef = ?
p_0: 0x00008F99
p_1: 0x88B5000C29F2DCAE11E32C0087EE1D85
',Rows=0,RowsAffected=0,Context='
ОбщийМодуль.vscESBСобытияШины.Модуль : 54 : ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ВыборкаУзлов.Ссылка, 1);'

Вопрос: Как мне настроить файл технологического журнала так, чтобы он собирал данные:

1. По p:processName=SA_MainStrg;
2. По запросам в текст которых входит подстрока (*);

Спасибо за внимание.
1 Alex_MA
 
29.05.14
07:49
ап
2 nufnufcheg
 
29.05.14
08:55
на инфостарте достаточно обработок для интерактивной настройки ТЖ и для чтения логов
3 Alex_MA
 
29.05.14
14:00
Разобрался - может кому пригодится.
Допустим есть конфигурационный файл технологического журнала:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">;
    <dump create="true" type="0" prntscrn="false"/>
    <log history="0" location="E:\LOG_1C_TLOCKS">
        <event>
            <eq property="name" value="tlock"/>
            <eq property="p:processName" value="tstma_upp"/>
        </event>
        <event>
            <eq property="name" value="dbmssql"/>
            <eq property="p:processName" value="tstma_upp"/>
        </event>
        <property name="sql"/>
        <property name="p:processname">
            <event>
                <eq property="name" value="tlock"/>
                <eq property="name" value="dbmssql"/>
            </event>
        </property>
    </log>
</config>

В данном файле конфигурации регистрируются два события:
1.    TLOCK
2.    DBMSSQL


<log history="0" location="E:\LOG_1C_TLOCKS">
    <event>
        <eq property="name" value="tlock"/>
        <eq property="p:processName" value="tstma_upp"/>
    </event>

Что соответствует первому тэгу <eq>:

<eq property="name" value="tlock"/>

Второй тэг <eq> говорит о том, что данное событие должно фильтроваться по processName и его значение должно быть tstma_upp:

<eq property="p:processName" value="tstma_upp"/>

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

<property name="sql"/>

В данном случае будет писаться значение свойства «sql» для всех событий (т.е. tlock и dbmssql);

Следующее значения свойств, которые будут записаны в технологический журнал относятся к событиям tlock и dbmssql:

<property name="p:processname">
    <event>
        <eq property="name" value="tlock"/>
        <eq property="name" value="dbmssql"/>
    </event>
</property>


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

Все оказывается очень просто.
Опять же мануальщики на сайте не могли нормально написать и показать нормальных примеров.
4 H A D G E H O G s
 
29.05.14
14:12
Никто не кинет в меня описанием, как настроить оконце количества данных с сервера.

У меня там циферек нет.
5 Alex_MA
 
09.06.14
12:17
Кстати начал более детально настраивать конфигурационный файл - не могу понять как отобрать запросы к СУБД, которые бы не содержали в тексте запроса "(NOLOCK)"