Re: Syslog Facility Patch - Mailing list pgsql-hackers

From Larry Rosenman
Subject Re: Syslog Facility Patch
Date
Msg-id 20001112140122.A28579@lerami.lerctr.org
Whole thread Raw
In response to Re: Syslog Facility Patch  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: Syslog Facility Patch  (Larry Rosenman <ler@lerctr.org>)
List 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@gmx.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@gmx.net       http://yi.org/peter-e/

-- 
Larry Rosenman                      http://www.lerctr.org/~ler
Phone: +1 972-414-9812 (voice) Internet: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749


pgsql-hackers by date:

Previous
From: "Joe Conway"
Date:
Subject: Re: cygwin gcc problem.
Next
From: Larry Rosenman
Date:
Subject: Re: Syslog Facility Patch