_sqp_define_log

sql

FUNCTION _sqp_define_log(IN logname CHAR(31), IN pathname CHAR(256), IN format(50)) RETURNS BOOLEAN;

Parametry

logname jméno logu, velikost písmen se ignoruje
pathname jméno souboru, do něhož se bude log zapisovat
format formát řádky v logu

Od verze

7.0, upraveno v 10.0

Popis

Funkce vytvoří nový log a přidělí mu jméno logname, které lze využívat ve funkci _sqp_trace pro nastavení logování činnosti SQL serveru. Log se zapisuje do souboru zadaného parametrem pathname. Pokud je pathname prázdné, soubor se vytvoří ve stejném adresáři jako základní log serveru, pod jménem logname a s příponou txt. Pokud zadaný soubor již existuje, bude se log zapisovat na jeho konec.

Základní log serveru (označovaný prázdným jménem) je definován automaticky při startu serveru a není třeba pro něj tuto funkci volat.

Funkci je možné také použít ke změně formátu již existujícího logu (včetně základního). V tom případě se neuvádí (ignoruje) cesta pathname.

Založení či změnu formátu logu může provádět jen Provozní správce databáze - viz Administrování SQL serveru.

Pokud je parametr format prázdný, pak se log vytváří ve standardním formátu. Odlišný formát lze zadat tak, že se v parametru format uvede formátovací řetězec znaků podle pravidel pro funkce sprinf jazyka C, v němž se místa, do nichž mají být doplněny proměnné informace, označí takto:

%d - datum, den a měsíc
%D - datum, den, měsíc a rok
%t - čas, hodina a minuta
%T - čas, hodina, minuta a sekunda
%s - označení situace (jedno písmeno) 
%u - jméno uživatele nebo služebního procesu 
%c - číslo klienta
%e – unikátní číslo session (spojení klienta se serverem)
%a – jméno otevřeného schématu
%m - text hlášení 

Podrobnosti a význam jednotlivých parametrů naleznete zde a zde.

Například standardnímu formátu logu odpovídá formát "%d %T %s %u %m". Ve formátovacím řetězci lze uvést nejvýše 10 takových parametrů, délka formátovacího řetězce je nejvýše 50 znaků.

Lze předepsat implicitní formát, tedy ten, který má základní log po spuštění serveru a ostatní logy vytořené s prázdným formátem. Zadá se to v registru pod příslušnou databází, jako hodnotu DefaultLogFormat.

Hodnota funkce

Funkce vrátí TRUE pokud uspěje. Vrací FALSE při chybě, která může být způsobena tím, že se nepodaří vytvořit či otevřít soubor na zadaném místě, nebo nedostatkem paměti.

Viz


Příklad:

1. Zapněte při startu serveru zápis SQL příkazů a logování klientů do pomocného logu DEBUGLOG:

.
PROCEDURE _ON_SERVER_START();
BEGIN
  CALL _sqp_define_log('debuglog','c:\pom\debuglog.log','%d %t %s %a %u %m');
 
  CALL _sqp_trace(TRACE_LOGIN, '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_SQL,   '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_USER_ERROR,   '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_USER_WARNING,   '', '', 'debuglog', 3);
// atd..  
END

2. Formát vhodný pro import do tabulky (pro následnou analýzu pomocí filtrování a třídění pomocí SQL serveru):

  CALL _sqp_define_log('debuglog','c:\sql_logy\debuglog.log','%D#%T#%s#%a#%u#%c#%e#%m#');

odpovídající tabulka má tvar:

CREATE TABLE `LOG_TABLE` (
`DT` DATE ,
`TM` TIME ,
`SITUAT` CHAR(1) COLLATE CSSTRING  ,
`APL` CHAR(31) COLLATE CSSTRING  ,
`USR` CHAR(31) COLLATE CSSTRING  ,
`CLNUM` SMALLINT ,
`SESS` INTEGER ,
`MESS` CHAR(255) COLLATE CSSTRING  ,
`CONTX` LONG VARCHAR COLLATE CSSTRING  )

odpovídající přenos (import dat z formátu CSV):

* 3"C:\temp\dlog.log" 0"":"":"Log_table" 0 0""
* "1" 0  0"DT" 0  0 0 0
* "2" 0  0"TM" 0  0 0 0
* "3" 0  0"SITUAT" 0  0 0 0
* "4" 0  0"APL" 0  0 0 0
* "5" 0  0"USR" 0  0 0 0
* "6" 0  0"CLNUM" 0  0 0 0
* "7" 0  0"SESS" 0  0 0 0
* "8" 0  0"MESS" 0  0 0 0
* "9" 0  0"CONTX" 0  0 0 0
+ 0 35 34 1 0 0"DD.MM.CCYY","hh:mm:ss","DD.MM.CCYY h.mm.ss","False,True", 46