diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index eff4c1aa9a4145b8997d2fded79d6b3497f856af..01093c57e025ffd0fcb6914fc1d7b9ed48eaeed0 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -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>
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 3f80c21580ae6464a38e76518fa0cb4efb2b5764..89aeacb5ffea7e0d454fd4e1805797a45dba1f24 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -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;
 	}
 
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index ecdc1d1a7570f403e4df15794f9df2f772096efd..88c20a2ac091f7a4e25cb01cd4cb4c2df3f98583 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -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