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: