| From: | Larry Rosenman <ler(at)lerctr(dot)org> | 
|---|---|
| To: | Peter Eisentraut <peter_e(at)gmx(dot)net> | 
| Cc: | PostgreSQL Hackers List <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Syslog Facility Patch | 
| Date: | 2000-11-12 20:01:22 | 
| Message-ID: | 20001112140122.A28579@lerami.lerctr.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
OK, I don't like it (it just says "syntax error"), but here is an
improved version.  I also switched to strcasecmp...
Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/src/sgml/runtime.sgml,v
retrieving revision 1.33
diff -c -r1.33 runtime.sgml
*** doc/src/sgml/runtime.sgml	2000/11/10 16:32:09	1.33
--- doc/src/sgml/runtime.sgml	2000/11/12 19:59:10
***************
*** 822,827 ****
--- 822,839 ----
       </varlistentry>
  
       <varlistentry>
+       <term>SYSLOG_FACILITY (<type>string</type>)</term>
+        <listitem>
+         <para>
+           If the SYSLOG option is set to 1 or greater, this option determines
+           the <application>syslog</application> facility used.  You may choose
+           from LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
+           the default is LOCAL0
+         </para>
+        </listitem>
+      </varlistentry>
+ 
+      <varlistentry>
        <term>TRACE_NOTIFY (<type>boolean</type>)</term>
        <listitem>
         <para>
Index: src/backend/utils/error/elog.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/error/elog.c,v
retrieving revision 1.65
diff -c -r1.65 elog.c
*** src/backend/utils/error/elog.c	2000/10/30 06:48:36	1.65
--- src/backend/utils/error/elog.c	2000/11/12 19:59:13
***************
*** 58,63 ****
--- 58,64 ----
   * ... in theory anyway
   */
  int Use_syslog = 0;
+ char *Syslog_facility = "LOCAL0";
  
  static void write_syslog(int level, const char *line);
  
***************
*** 620,625 ****
--- 621,627 ----
  
  	static bool	openlog_done = false;
  	static unsigned long seq = 0;
+ 	static int	syslog_fac = LOG_LOCAL0;
  	int len = strlen(line);
  
  	if (Use_syslog == 0)
***************
*** 627,633 ****
  
  	if (!openlog_done)
  	{
! 		openlog("postgres", LOG_PID | LOG_NDELAY, LOG_LOCAL0);
  		openlog_done = true;
  	}
  
--- 629,651 ----
  
  	if (!openlog_done)
  	{
! 		if (strcasecmp(Syslog_facility,"LOCAL0") == 0) 
! 			syslog_fac = LOG_LOCAL0;
! 		if (strcasecmp(Syslog_facility,"LOCAL1") == 0)
! 			syslog_fac = LOG_LOCAL1;
! 		if (strcasecmp(Syslog_facility,"LOCAL2") == 0)
! 			syslog_fac = LOG_LOCAL2;
! 		if (strcasecmp(Syslog_facility,"LOCAL3") == 0)
! 			syslog_fac = LOG_LOCAL3;
! 		if (strcasecmp(Syslog_facility,"LOCAL4") == 0)
! 			syslog_fac = LOG_LOCAL4;
! 		if (strcasecmp(Syslog_facility,"LOCAL5") == 0)
! 			syslog_fac = LOG_LOCAL5;
! 		if (strcasecmp(Syslog_facility,"LOCAL6") == 0)
! 			syslog_fac = LOG_LOCAL6;
! 		if (strcasecmp(Syslog_facility,"LOCAL7") == 0)
! 			syslog_fac = LOG_LOCAL7;
! 		openlog("postgres", LOG_PID | LOG_NDELAY, syslog_fac);
  		openlog_done = true;
  	}
  
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.16
diff -c -r1.16 guc.c
*** src/backend/utils/misc/guc.c	2000/11/09 11:25:59	1.16
--- src/backend/utils/misc/guc.c	2000/11/12 19:59:15
***************
*** 39,44 ****
--- 39,48 ----
  extern int CheckPointTimeout;
  extern int XLOGbuffers;
  extern int XLOG_DEBUG;
+ #ifdef ENABLE_SYSLOG
+ extern char * Syslog_facility;
+ bool check_facility(const char *facility);
+ #endif
  
  /*
   * Debugging options
***************
*** 303,308 ****
--- 307,315 ----
  
  	{"unix_socket_group",         PGC_POSTMASTER,       &Unix_socket_group,
  	 "", NULL},
+ #ifdef ENABLE_SYSLOG
+ 	{"syslog_facility",	PGC_SIGHUP,	&Syslog_facility, "LOCAL0", check_facility},	 
+ #endif
  
  	{NULL, 0, NULL, NULL, NULL}
  };
***************
*** 807,809 ****
--- 814,832 ----
  		if (*cp == '-')
  			*cp = '_';
  }
+ #ifdef ENABLE_SYSLOG
+ bool check_facility(const char *facility)
+ {
+ 	if (strcasecmp(facility,"LOCAL0") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL1") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL2") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL3") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL4") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL5") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL6") == 0) return true;
+ 	if (strcasecmp(facility,"LOCAL7") == 0) return true;
+ 	fprintf(stderr,"invalid syslog_facility %s\n",facility);
+ 	elog(FATAL,"invalid syslog_facility %s",facility);
+ 	return false;
+ }
+ #endif
* Peter Eisentraut <peter_e(at)gmx(dot)net> [001112 12:18]:
> Larry Rosenman writes:
> 
> > Here is a patch for allowing the syslog facility to be set.
> 
> I think you want to check for invalid values, like "LOCAL37.5".  The last
> field in the ConfigNamesString structure (see below) allows you to set a
> "parse hook", that is, a function that parses the input value and returns
> true if it is okay.  At least this is how it is supposed to work, I've
> never actually tried it. :)  Or maybe just make it an integer option?
> 
> > ***************
> > *** 303,308 ****
> > --- 304,312 ----
> >   
> >   	{"unix_socket_group",         PGC_POSTMASTER,       &Unix_socket_group,
> >   	 "", NULL},
> > + #ifdef ENABLE_SYSLOG
> > + 	{"syslog_facility",	PGC_SIGHUP,	&Syslog_facility, "LOCAL0", NULL},	 
> > + #endif
> >   
> >   	{NULL, 0, NULL, NULL, NULL}
> >   };
> > 
> > 
> 
> -- 
> Peter Eisentraut      peter_e(at)gmx(dot)net       http://yi.org/peter-e/
-- 
Larry Rosenman                      http://www.lerctr.org/~ler
Phone: +1 972-414-9812 (voice) Internet: ler(at)lerctr(dot)org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Gary MacDougall | 2000-11-12 20:22:42 | Re: cygwin gcc problem. | 
| Previous Message | Joe Conway | 2000-11-12 18:22:30 | Re: cygwin gcc problem. |