Hannes: syslog - name des loggenden programmes

Hallo,

in meinem Perlscript logge ich diverse dinge ins syslog so wie es hier beschrieben wird:
http://lexington.pm.org/meetings/022001.html

Das klappt auch. Leider würde ich aber eine Sache ändern aber ich finde nicht den Weg dorthin.
Im LogFile steht dann als Zeile beispielsweise:

Feb 11 22:14:29 servername myprogram: geloggter text geloggter text

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?
Kann mir bitte jemand auf die Sprünge helfen? Ich seh da nicht durch wie man das dann angeben muss.
Oder muss ich dann den logger direkt per exec ansprechen?

Danke,
Hannes

  1. Guten Tag,

    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.

    Oder muss ich dann den logger direkt per exec ansprechen?

    Das geht mit logger auch nicht. Siehe man logger.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Hallo,

      »» 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.

      »» 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'
      aus perl heraus könnte ich dies ja per exec auslösen, hatte aber gehofft das es die internen module auch können...

      Hannes

      1. 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".
        1. Hallo,

          Natürlich können "die" das. Hast Du die von Dir verlinkte Seite http://lexington.pm.org/meetings/022001.html auch nur ansatzweise gelesen?

          Oh, das hab ich wohl übersehen. Es geht nun, danke. Es ist halt manchmal so das man den Wald vor lauter Bäumen nicht sieht. Zudem sind das meine ersten Schritte in Perl und da hat man noch einen frei...

          Danke,
          Hannes