Puncte:0

Expresia Rsyslog cu $programname nu funcționează

drapel ng

am primit asta în rsysconf-ul meu:

    $template TemplateLog,"%msg%\n"   
    $template DynamicLog,"%msg%\n"                                                                                                                            
    $template DynamicFile,"/var/log/%PROGRAMNAME%.log"    
    dacă ($programname == „test”) atunci {local3.=debug -/var/log/path.log;TemplateLog}                                                                  
    local3.=debug -?DynamicFile;DynamicLog                                                                                                                 
    & Stop   

Dacă las deoparte declarația if, funcționează bine. Dar trebuie să fac declarația if să funcționeze. Ce este în neregulă? Multumesc pentru sfat.

Am încercat să schimb == la conține așa cum este sugerat într-unul dintre răspunsuri, acest lucru nu ajută.

$programname conține aceleași informații ca %PROGRAMNAME%? Asta ar putea cauza problema, poate...

Deci, conform răspunsului, am făcut asta:

$template TemplateLog,"%msg%\n"   
$template DynamicLog,"%msg%\n"                                                                                                                            
$template DynamicFile,"/var/log/%PROGRAMNAME%.log"           
template(name="pname" type="string" string="%PROGRAMNAME%")                                                                                               
set $!xyz = exec_template("pname");     
dacă ($!xyz conține 'test'), atunci {local3.=debug -/var/log/path.log;TemplateLog}
local3.=debug -?DynamicFile;DynamicLog                                                                                                                 
& Stop   

Dar, din păcate, nici acest cod nu funcționează. Dacă șterg instrucțiunea if, al doilea DynamicFile este salvat în test.log, deci valoarea este corectă.

Puncte:0
drapel ng

Puteți imprima oricând variabila pentru a vedea rezultatul. Cred că este ceva legat de sintaxă, vă rugăm să încercați să utilizați conţine în loc de ==.

Îl puteți atribui unui var folosind șabloane:

    $template DynamicLog,"%msg%\n"                                                                                                                            
    $template DynamicFile,"/var/log/%PROGRAMNAME%.log"    
    template(name="pname" type="string" string="%PROGRAMNAME%")
    set $!xyz = exec_template("pname");
    dacă ($!xyz conține „test”) atunci {local3.=debug -/var/log/path.log;TemplateLog}                                                                 
    local3.=depanare -?DynamicFile;DynamicLog                                                                                                                 
    & stop```
drapel ng
Nu, asta nu ajută. Sunt aproape sigur că este ceva cu sintaxă, totuși nu îl văd, deoarece chiar nu mă interesează asta
drapel ng
Cum il printezi?
Zhivko Zhelev avatar
drapel ng
Ok, deci ```$programname``` și ```%PROGRAMNAME%``` nu sunt aceleași, nu puteți folosi doar „programname” ca var.
Zhivko Zhelev avatar
drapel ng
Deci, probabil, sintaxa ```if``` este ok, dar o puteți face cu șablon (voi edita răspunsul meu)
drapel ng
Mulțumiri ! Am ajustat răspunsul, deci este conform stării actuale, dar încă nu funcționează, din păcate :(

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.