RE: [evlog-dev] Program name issue
"O'Riordain, Seosamh" <[email protected]> Mon, 3 Nov 2003 16:45:02 -0000
| Newsgroups | gmane.linux.kernel.event-logging |
|---|---|
| Message-ID | <0CA17FFA5554E4439FC308750A6661E505C6A77D@iloexc01.emea.cpqcorp.net> |
This is a multi-part message in MIME format. ------_=_NextPart_001_01C3A229.D385997E Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Hien, This patch works fine. I've attached a small patch that just makes it behave like syslog on linux, ie if an ident string=20 is not defined, it puts in the progname rather than "syslog". I initially had started to implement this as an ident attribute=20 in the evlog structure so that one could filter on it=20 eg -f 'ident contains "my_daemon"' =20 However, this ends up modifying a lot of the code. A patch is=20 attached in case someone wants to make use of it (local logging works fine, remote logging not tested fully - I may return to finish it if I get time.) Thanks. Regard, Seo -----Original Message----- From: Hien Nguyen [mailto:[email protected]]=20 Sent: 31 October 2003 18:05 To: O'Riordain, Seosamh; [email protected] Subject: Re: [evlog-dev] Program name issue Oops, the 'make install' should be make -f Makefile.mk install (as root) Regards, Hien. Hien Nguyen wrote: > Hi Seo, >=20 > Attach is a patch for the libevlsyslog (syslog forwarder). With this > patch the syslog forwarder will capture the ident and pid (if specified=20 > by the caller). >=20 > You should apply this patch against the evlog-1.5.3 source tree. >=20 >=20 > Applying patch > -------------- > copy the patch to your evlog source dir >=20 > cd evlog > patch -p01 < libevlsyslog.patch >=20 > Build evlog and install libevlsyslog > ------------------------------------ > cd user > make -f Makefile.mk > cd user/libevlsyslog > make install (as root) >=20 >=20 > Please let me know if you have any problem. >=20 > Regards, Hien. >=20 >=20 >=20 > O'Riordain, Seosamh wrote: >=20 >> Hi Hien, >> >> I used the syslog forwarder. The syslogat API needs to >> be used within the application to make use of it's features. That's=20 >> good for new applications but I'm looking at gathering the logs from=20 >> existing OS applications (eg DHCP, NIS,NTP,Samba,etc) from multiple=20 >> servers to a central location (and I don't want to touch their=20 >> code!). It's been decided that the syslog ident string is a piece of=20 >> information that's not acceptable to lose - hence we need it but=20 >> still want to use the full capabilities of evlog. >> >> I've now started to look at adding an "ident=3D<tag>" attribute to = the=20 >> log entry structure. Just curious if someone else has done this (or=20 >> wanted this) before ? >> >> Regards, >> Seo >> >> -----Original Message----- >> From: Hien Nguyen [mailto:[email protected]] Sent: 30 October 2003=20 >> 19:50 >> To: O'Riordain, Seosamh >> Cc: [email protected] >> Subject: Re: [evlog-dev] Program name issue >> >> >> Hi Seo, >> >> May I ask you how did you log the events to evlog? did they come from >> syslogat api or you just turned on the syslog forwarder? >> >> Notes: For more information about syslogat see man page for=20 >> evlgentmpls. >> >> Thanks, Hien. >> >> >> O'Riordain, Seosamh wrote: >> >>> Hi, >>> >>> I've been looking at using evlog as a replacement for syslog, and=20 >>> also >> >> >> >>> for being a central log consolidator. Now it provides plenty of >>> excellent features that I can and want to use. The only thing it=20 >>> doesn't provide compared to syslog, is the program >>> name. See below, for a comparison in output of syslog and evlog >> >> >> created >> >>> by doing an rsh >>> to a machine. >>> >>> /var/log/messages extract >>> Oct 30 11:33:46 angel2 pam_rhosts_auth[27509]: allowed to=20 >>> root@angel3 as root Oct 30 11:33:46 angel2 login(pam_unix)[27510]:=20 >>> session opened for user >> >> >> >>> root by (uid=3D0) >>> Oct 30 11:33:46 angel2 login -- root[27510]: ROOT LOGIN ON pts/1=20 >>> FROM >>> angel3 >>> >>> evlview -n --syslog >>> Oct 30 11:33:46 angel2 allowed to root@angel3 as root >>> Oct 30 11:33:46 angel2 session opened for user root by (uid=3D0) Oct = >>> 30 >>> 11:33:46 angel2 ROOT LOGIN ON pts/1 FROM angel3 >>> >>> On the central log server, when viewing the logs for this host=20 >>> (current or archived) one would not be able to tell what program=20 >>> caused these or whether one used rsh >> >> >> or >> >>> some other login mechanism, >>> say ssh. >>> >>> My questions become, was this a deliberate decision not to provide=20 >>> the program name in evlog ? >>> What would it take to provide this functionality ? >>> Thanks. >>> >>> /Regards/Seo >>> >> >> >> >> >> >> ------------------------------------------------------- >> This SF.net email is sponsored by: SF.net Giveback Program. Does=20 >> SourceForge.net help you be more productive? Does it >> help you create better code? SHARE THE LOVE, and help us help >> YOU! Click Here: http://sourceforge.net/donate/=20 >> _______________________________________________ >> evlog-developers mailing list [email protected] >> https://lists.sourceforge.net/lists/listinfo/evlog-developers >> >=20 >=20 > ---------------------------------------------------------------------- > -- >=20 > --- /home/nguyhien/prj/sandbox/v1.5.3/evlog/user/libevlsyslog/libevlsyslog.c Wed Nov 13 16:36:52 2002 > +++ evlog/user/libevlsyslog/libevlsyslog.c Thu Oct 30 14:02:39 2003 > @@ -39,7 +39,7 @@ > static int _evlSysBlockSignals(sigset_t *oldset); > static void _evlSysRestoreSignals(sigset_t *oldset); > static int _evlSysGetProcId(); > -static int_nonBlkConnection(const char *socketpath, struct=20 > sockaddr_un *sa, int nsec); > +static int _nonBlkConnection(const char *socketpath, struct=20 > +sockaddr_un *sa, int nsec); > =20 > /* > * Globals copied from glibc-2.2.3/misc/syslog.c > @@ -47,6 +47,8 @@ > static int LogMask =3D 0xff; /* mask of priorities to be logged > */ > static int LogFacility =3D LOG_USER; /* default facility code */ > +static int LogOption =3D 0; > +static const char *LogIdent =3D "syslog"; > =20 > static char libclibrary[40]; > static char *configFile =3D "/etc/evlog.d/libevlsyslog.conf"; @@ = -187,7 > +189,7 @@ { > char evlbuf[POSIX_LOG_ENTRY_MAXLEN + REC_HDR_SIZE + 1]; > char *plog_data, *pheader; > - int log_data_size; > + int log_data_size =3D 0; > =20 > struct posix_log_entry entry; > int gotTimeStamp =3D 0; > @@ -217,7 +219,23 @@ > /* Fill the buffer with log data first so we can get the length */ > pheader =3D evlbuf; > plog_data =3D pheader + REC_HDR_SIZE; > - log_data_size =3D vsnprintf(plog_data, POSIX_LOG_ENTRY_MAXLEN, fmt, ap); > + if (LogIdent) { > + strcpy(plog_data, LogIdent); > + log_data_size =3D strlen(plog_data); > + plog_data +=3Dlog_data_size; > + } > + if (LogOption & LOG_PID) { > + sprintf(plog_data, "[%d]", getpid()); > + log_data_size +=3D strlen(plog_data); > + plog_data +=3D strlen(plog_data); > + } > + if (LogIdent) { > + *plog_data++ =3D ':'; > + *plog_data++ =3D ' '; > + log_data_size +=3D 2; > + }=09 > + =09 > + log_data_size +=3D vsnprintf(plog_data, POSIX_LOG_ENTRY_MAXLEN, fmt,=20 > +ap); > =20 > /* Capture the time stamp ASAP. */ > #ifdef _POSIX_TIMERS_1 > @@ -294,6 +312,9 @@ > openlog (const char *ident, int logstat, int logfac) > { > LogFacility =3D logfac; > + LogOption =3D logstat; > + if (ident !=3D NULL) > + LogIdent =3D ident; > glibc_openlog(ident, logstat, logfac); > } > =20 ------_=_NextPart_001_01C3A229.D385997E Content-Type: application/octet-stream; name="libevlsyslog.patch.2" Content-Transfer-Encoding: base64 Content-Description: libevlsyslog.patch.2 Content-Disposition: attachment; filename="libevlsyslog.patch.2" KioqIGxpYmV2bHN5c2xvZy5jCU1vbiBOb3YgIDMgMTY6MTA6MDMgMjAwMwotLS0gLi4vLi4vLi4v Li4vZXZsb2ctMS41LjMtMS91c2VyL2xpYmV2bHN5c2xvZy9saWJldmxzeXNsb2cuYwlNb24gTm92 ICAzIDEzOjQ3OjIyIDIwMDMKKioqKioqKioqKioqKioqCioqKiA0OCw1NCAqKioqCiAgCQkJCQkJ CQkgKi8KICBzdGF0aWMgaW50CUxvZ0ZhY2lsaXR5ID0gTE9HX1VTRVI7CS8qIGRlZmF1bHQgZmFj aWxpdHkgY29kZSAqLwogIHN0YXRpYyBpbnQgCUxvZ09wdGlvbiA9IDA7CiEgc3RhdGljIGNvbnN0 IGNoYXIgKkxvZ0lkZW50ID0gInN5c2xvZyI7CiAgCiAgc3RhdGljIGNoYXIgbGliY2xpYnJhcnlb NDBdOwogIHN0YXRpYyBjaGFyICpjb25maWdGaWxlID0gIi9ldGMvZXZsb2cuZC9saWJldmxzeXNs b2cuY29uZiI7Ci0tLSA0OCw1NSAtLS0tCiAgCQkJCQkJCQkgKi8KICBzdGF0aWMgaW50CUxvZ0Zh Y2lsaXR5ID0gTE9HX1VTRVI7CS8qIGRlZmF1bHQgZmFjaWxpdHkgY29kZSAqLwogIHN0YXRpYyBp bnQgCUxvZ09wdGlvbiA9IDA7CiEgZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7CiEgc3RhdGljIGNv bnN0IGNoYXIgKkxvZ0lkZW50ID0gTlVMTDsKICAKICBzdGF0aWMgY2hhciBsaWJjbGlicmFyeVs0 MF07CiAgc3RhdGljIGNoYXIgKmNvbmZpZ0ZpbGUgPSAiL2V0Yy9ldmxvZy5kL2xpYmV2bHN5c2xv Zy5jb25mIjsKKioqKioqKioqKioqKioqCioqKiAyMTksMjI5ICoqKioKICAJLyogRmlsbCB0aGUg YnVmZmVyIHdpdGggbG9nIGRhdGEgZmlyc3Qgc28gd2UgY2FuIGdldCB0aGUgbGVuZ3RoICovCiAg CXBoZWFkZXIgPSBldmxidWY7CiAgCXBsb2dfZGF0YSA9IHBoZWFkZXIgKyBSRUNfSERSX1NJWkU7 CiEgCWlmIChMb2dJZGVudCkgewohIAkJc3RyY3B5KHBsb2dfZGF0YSwgTG9nSWRlbnQpOwohIAkJ bG9nX2RhdGFfc2l6ZSA9IHN0cmxlbihwbG9nX2RhdGEpOwohIAkJcGxvZ19kYXRhICs9bG9nX2Rh dGFfc2l6ZTsKISAJfQogIAlpZiAoTG9nT3B0aW9uICYgTE9HX1BJRCkgewogIAkJc3ByaW50Zihw bG9nX2RhdGEsICJbJWRdIiwgZ2V0cGlkKCkpOwogIAkJbG9nX2RhdGFfc2l6ZSArPSBzdHJsZW4o cGxvZ19kYXRhKTsKLS0tIDIyMCwyMjkgLS0tLQogIAkvKiBGaWxsIHRoZSBidWZmZXIgd2l0aCBs b2cgZGF0YSBmaXJzdCBzbyB3ZSBjYW4gZ2V0IHRoZSBsZW5ndGggKi8KICAJcGhlYWRlciA9IGV2 bGJ1ZjsKICAJcGxvZ19kYXRhID0gcGhlYWRlciArIFJFQ19IRFJfU0laRTsKISAJaWYgKExvZ0lk ZW50ID09IE5VTEwpIExvZ0lkZW50ID0gX19wcm9nbmFtZTsKISAJc3RyY3B5KHBsb2dfZGF0YSwg TG9nSWRlbnQpOwohIAlsb2dfZGF0YV9zaXplID0gc3RybGVuKHBsb2dfZGF0YSk7CiEgCXBsb2df ZGF0YSArPWxvZ19kYXRhX3NpemU7CiAgCWlmIChMb2dPcHRpb24gJiBMT0dfUElEKSB7CiAgCQlz cHJpbnRmKHBsb2dfZGF0YSwgIlslZF0iLCBnZXRwaWQoKSk7CiAgCQlsb2dfZGF0YV9zaXplICs9 IHN0cmxlbihwbG9nX2RhdGEpOwoqKioqKioqKioqKioqKioKKioqIDMxNSwzMjAgKioqKgotLS0g MzE1LDMyMiAtLS0tCiAgCUxvZ09wdGlvbiA9IGxvZ3N0YXQ7CiAgCWlmIChpZGVudCAhPSBOVUxM KQogIAkJTG9nSWRlbnQgPSBpZGVudDsKKyAJZWxzZQorIAkJTG9nSWRlbnQgPSBfX3Byb2duYW1l OwogIAlnbGliY19vcGVubG9nKGlkZW50LCBsb2dzdGF0LCBsb2dmYWMpOwogIH0KICAK ------_=_NextPart_001_01C3A229.D385997E Content-Type: application/x-gzip; name="use_ident_patch.txt.gz" Content-Transfer-Encoding: base64 Content-Description: use_ident_patch.txt.gz Content-Disposition: attachment; filename="use_ident_patch.txt.gz" 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 2Zug/wHcKPjX3z0AAA== ------_=_NextPart_001_01C3A229.D385997E-- ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/