Re: Syslog Facility Patch - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Syslog Facility Patch
Date
Msg-id 200011132134.QAA07942@candle.pha.pa.us
Whole thread Raw
In response to Re: Syslog Facility Patch  (Larry Rosenman <ler@lerctr.org>)
Responses Re: Syslog Facility Patch  (Larry Rosenman <ler@lerctr.org>)
Re: Syslog Facility Patch  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-hackers
Applied.


> 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
> 


--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Re: UUNET socket-file-location patch
Next
From: Bruce Momjian
Date:
Subject: Re: Re: UUNET socket-file-location patch