Moin Moin!
»» »» Als myprogramm wird dort das perlscript aufgeführt das gerade läuft und die Zeile geschrieben hat. Dies möchte ich aber ändern und hier ebenfalls einen eigenen String verwenden?
»»
»» Das wäre extrem unklug, denn dann könnte sich jedes Programm als ein beliebig anderes Programm ausgeben.
So ist syslog aber nun einmal implementiert und standardisiert. Die Syslog-Funktionen sind reine Library-Funktionen, die in der Library auf eine oder mehrere systemabhängige Arten mit dem Syslog-Daemon kommunizieren. Zugriffskontrolle und ggf. loggen des wahren Namens sind Job des Daemons, nicht der Library. Ebenso die Entscheidung, ob die Messages tatsächlich geloggt oder ignoriert werden.
»» »» Oder muss ich dann den logger direkt per exec ansprechen?
»»
»» Das geht mit logger auch nicht. Siehe man logger.
Mit logger benutze ich das aber schon so:
/bin/logger -i -t 'ich/bin/das/programm' -p MAIL.INFO -- $eine_variable 'ein text'
Nun rate mal, was logger macht. Es ruft void openlog(const char *ident, int option, int facility)
auf. Der Rest steht in der manpage zu openlog.
aus perl heraus könnte ich dies ja per exec auslösen, hatte aber gehofft das es die internen module auch können...
Natürlich können "die" das. Hast Du die von Dir verlinkte Seite http://lexington.pm.org/meetings/022001.html auch nur ansatzweise gelesen?
Wenn Dir der korrekte Weg im ersten Code-Beispiel
$user = $ENV{'USER'};
setlogsock('unix');
openlog($0,'','user');
syslog('info', "added $user to documentation database");
closelog;
schon nicht auffällt, dann aber doch wohl hoffentlich im zweiten:
# $programname is assumed to be a global. Also log the PID
# and to CONSole if there's a problem. Use facility 'user'.
openlog($programname, 'pid,cons', 'user');
syslog($priority, $msg);
closelog();
An dem Zaunpfahl hängt ja schon ein halbes Grundstück samt Haus dran.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".