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