2016-05-27 3 views
0

Also für eine Abfragefunktion, es Produkttabellen. Wie leite ich die Standardausgabe um, ohne das Ergebnis zurückzugeben? Ich möchte die Standardausgabe umleiten, ohne die Tabellenergebnisse umzuleiten. Ich möchte alle Nachrichten erfassen, die kdb produziert.Zum Umleiten von Standard-Ausgabe in kdb, wie alles zu richten, aber Ergebnisse?

So habe ich versucht, diese

q abc.q -p 4000 </dev/null> kdb.log 2>&1 &. 

aber auch die Ergebnisse von Anfragen umleiten, nicht wahr?

Wenn nur direkte Fehler, das fängt nicht alles ein, oder? Ich möchte alles außer dem Ergebnis erfassen.

+0

Können Sie einige Beispiele für Ausgänge geben und wo würden Sie sie weitergeleitet werden möchten? – user2242865

+0

Ich möchte alles umleiten außer Tabellen..Ergebnisse. sagen wir Tab: ([] a: 1 2 3; b: 2 4 6); Ich möchte Tab nicht umleiten, aber ich will es auch nicht in der q Konsole anzeigen. Ich möchte alle Fehlermeldungen und andere Informationen in die Protokolldatei umleiten. Ich möchte diese Tabellen nicht protokollieren, weil es zu groß ist. – Terry

+0

das klingt eher wie eine Unix-Frage als eine kdb Frage? KDB gibt Standardoutput/Fehler aus, wie jeder Prozess, einschließlich Ergebnisse wie 'show table', so dass es Ihnen überlassen wird, (a) auf der Befehlszeile umzuleiten (wie Sie es in Ihrem Beispiel bereits getan haben) und (b) korrekte Kanäle zu verwenden innerhalb von q umleiten. Vielleicht möchten Sie auch .z.p [gs] innerhalb von q protokollieren. Nebenbei bemerkt, könntest du mehr von einer Antwort bekommen, wenn du deine Kollegiumskollegen mit Up-Stimmen belohnst;) –

Antwort

2

Schauen Sie sich die unten .. (Ich schrieb dies für ein Haus-Projekt)

.logger.on:{[pth] 
    if[not ":/"~2#string[pth];-1"\n\tPlease supply absolute path to file; e.g.) .logger.on[`:/path/to/logfile]";]; 
.logger.err:hopen `$string[pth],".err"; 
.logger.std:hopen `$string[pth],".out"; 
writeOut:{ h:(.logger.std;.logger.err)x~`err; h(y,"\n");}; 
zpi:{y:-1_y; r:@[value;y;{"Error:'",x}]; $["Error:"~6#r;[e:6_r;x[`err;e];-1 e];[x[`std;y];show r]];}[writeOut;]; 
`.z.pi set zpi; 
} 

Nachdem in q Laden, einige Befehle eingeben ...

q).logger.on[`:/home/chromozorz/q/projects/myLog] 
q)2+2 
4 
q)1+1 
2 
q)t:([] a:til 5;b:5?`2) 
q)2+string 
'type 
q)2+`a 
'type 
q)\\ 

nun das erstellte Protokoll überprüfen Dateien;

[email protected]:~/q/projects$ cat myLog.err 
'type 
'type 
[email protected]:~/q/projects$ cat myLog.out 
2+2 
1+1 
t:([] a:til 5;b:5?`2) 

Wenn Sie nicht wollen, um das Ergebnis in der Konsole zeigen dann die ZPI Definition gerade bearbeiten ...

+0

vielen dank !!!! Ich wünschte, ich könnte wählen .... – Terry

+0

Kein Problem! Warum kannst du nicht wählen? – Chromozorz

Verwandte Themen