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: | Raw Message | Whole Thread | 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. |