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/