]> granicus.if.org Git - postgresql/commitdiff
Ok, You guys are probably tired of me, BUT, here is another one, that
authorBruce Momjian <bruce@momjian.us>
Mon, 13 Nov 2000 21:35:03 +0000 (21:35 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 13 Nov 2000 21:35:03 +0000 (21:35 +0000)
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..

Larry Rosenman

doc/src/sgml/runtime.sgml
src/backend/utils/error/elog.c
src/backend/utils/misc/guc.c

index eff4c1aa9a4145b8997d2fded79d6b3497f856af..01093c57e025ffd0fcb6914fc1d7b9ed48eaeed0 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.33 2000/11/10 16:32:09 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.34 2000/11/13 21:35:02 momjian Exp $
 -->
 
 <Chapter Id="runtime">
@@ -821,6 +821,30 @@ env PGOPTIONS='-c geqo=off' psql
       </listitem>
      </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>
index 3f80c21580ae6464a38e76518fa0cb4efb2b5764..89aeacb5ffea7e0d454fd4e1805797a45dba1f24 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.65 2000/10/30 06:48:36 ishii Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.66 2000/11/13 21:35:02 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -58,6 +58,8 @@ extern CommandDest whereToSendOutput;
  * ... 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,6 +622,7 @@ write_syslog(int level, const char *line)
 
        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,7 +630,23 @@ write_syslog(int level, const char *line)
 
        if (!openlog_done)
        {
-               openlog("postgres", LOG_PID | LOG_NDELAY, LOG_LOCAL0);
+               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 ecdc1d1a7570f403e4df15794f9df2f772096efd..88c20a2ac091f7a4e25cb01cd4cb4c2df3f98583 100644 (file)
@@ -4,7 +4,7 @@
  * Support for grand unified configuration scheme, including SET
  * command, configuration file, and command line options.
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.17 2000/11/13 15:18:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.18 2000/11/13 21:35:03 momjian Exp $
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  * Written by Peter Eisentraut <peter_e@gmx.net>.
@@ -39,6 +39,11 @@ extern bool Log_connections;
 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,6 +308,12 @@ ConfigureNamesString[] =
 
        {"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
 
        {"unixsocket",                    PGC_POSTMASTER,       &UnixSocketName,
         "", NULL},
@@ -813,3 +824,18 @@ ParseLongOption(const char * string, char ** name, char ** value)
                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