Re: Syslog Facility Patch - Mailing list pgsql-hackers

From Larry Rosenman
Subject Re: Syslog Facility Patch
Date
Msg-id 20001112191854.A15709@lerami.lerctr.org
Whole thread Raw
In response to Re: Syslog Facility Patch  (Larry Rosenman <ler@lerctr.org>)
Responses Re: Syslog Facility Patch
Re: Syslog Facility Patch
Re: Syslog Facility Patch
List pgsql-hackers
Ok, You guys are probably tired of me, BUT, here is another one, that
adds the facility to set the program name used in syslog. 
(this includes the other ones). 

One gotcha, the parser doesn't like special characters in strings.
For example, i tried to use pg-test, and if failed the parse coming
from the postgresql.conf file.  

I don't think it's a showstopper..

Comments?



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/13 01:15:34
***************
*** 822,827 ****
--- 822,851 ----      </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>SYSLOG_PROGID (<type>string</type>)</term>
+        <listitem>
+         <para>
+          If the SYSLOG option is set to 1 or greater, this option determines
+          the program id used to identify <product>PostgreSQL</product> messages
+          in <application>syslog</application> log messages.  The default is
+          postgres.
+         </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/13 01:15:37
***************
*** 58,63 ****
--- 58,65 ----  * ... in theory anyway  */ int Use_syslog = 0;
+ char *Syslog_facility = "LOCAL0";
+ char *Syslog_progid = "postgres";  static void write_syslog(int level, const char *line); 
***************
*** 620,625 ****
--- 622,628 ----      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;     } 
--- 630,652 ----      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(Syslog_progid, 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/13 01:15:38
***************
*** 39,44 ****
--- 39,49 ---- extern int CheckPointTimeout; extern int XLOGbuffers; extern int XLOG_DEBUG;
+ #ifdef ENABLE_SYSLOG
+ extern char *Syslog_facility;
+ extern char *Syslog_progid;
+        bool check_facility(const char *facility);
+ #endif  /*  * Debugging options
***************
*** 303,308 ****
--- 308,319 ----      {"unix_socket_group",         PGC_POSTMASTER,       &Unix_socket_group,      "", NULL},
+ #ifdef ENABLE_SYSLOG
+     {"syslog_facility",           PGC_SIGHUP,        &Syslog_facility, 
+     "LOCAL0", check_facility},     
+     {"syslog_progid",             PGC_SIGHUP,        &Syslog_progid, 
+     "postgres", NULL},     
+ #endif      {NULL, 0, NULL, NULL, NULL} };
***************
*** 807,809 ****
--- 818,835 ----         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;
+     return false;
+ }
+ #endif
-- 
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: Tatsuo Ishii
Date:
Subject: Re: can't insert "³\" as varchar in 7.0.2 and 7.1
Next
From: "Mitch Vincent"
Date:
Subject: Re: 7.0.2 -> 7.0.3 problem - anyone?