mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-13 19:57:53 +08:00
Add option to pg_ctl to choose event source for logging
pg_ctl will log to the Windows event log when it is running as a service, which is the primary way of running PostgreSQL on Windows. This option makes it possible to specify which event source to use for this, in order to separate different instances. The server logging itself is still controlled by the regular logging parameters, including a separate setting for the event source. The parameter to pg_ctl only controlls the logging from pg_ctl itself. MauMau, review in many iterations by Amit Kapila and me.
This commit is contained in:
parent
aa68872561
commit
c0e4520b16
@ -419,6 +419,22 @@ PostgreSQL documentation
|
||||
<title>Options for Windows</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-e <replaceable class="parameter">source</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Name of the event source for <application>pg_ctl</application> to use
|
||||
for logging to the event log when running as a Windows service. The
|
||||
default is <literal>PostgreSQL</literal>. Note that this only controls
|
||||
the logging from <application>pg_ctl</application> itself - once
|
||||
started, the server will use the event source specified
|
||||
by <xref linkend="guc-event-source">. Should the server fail during
|
||||
early startup, it may also log using the default event
|
||||
source <literal>PostgreSQL</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-N <replaceable class="parameter">servicename</replaceable></option></term>
|
||||
<listitem>
|
||||
|
@ -1989,7 +1989,8 @@ write_eventlog(int level, const char *line, int len)
|
||||
|
||||
if (evtHandle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
evtHandle = RegisterEventSource(NULL, event_source ? event_source : "PostgreSQL");
|
||||
evtHandle = RegisterEventSource(NULL,
|
||||
event_source ? event_source : DEFAULT_EVENT_SOURCE);
|
||||
if (evtHandle == NULL)
|
||||
{
|
||||
evtHandle = INVALID_HANDLE_VALUE;
|
||||
|
@ -3019,7 +3019,7 @@ static struct config_string ConfigureNamesString[] =
|
||||
NULL
|
||||
},
|
||||
&event_source,
|
||||
"PostgreSQL",
|
||||
DEFAULT_EVENT_SOURCE,
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
|
@ -89,6 +89,7 @@ static char *post_opts = NULL;
|
||||
static const char *progname;
|
||||
static char *log_file = NULL;
|
||||
static char *exec_path = NULL;
|
||||
static char *event_source = NULL;
|
||||
static char *register_servicename = "PostgreSQL"; /* FIXME: + version ID? */
|
||||
static char *register_username = NULL;
|
||||
static char *register_password = NULL;
|
||||
@ -178,7 +179,8 @@ write_eventlog(int level, const char *line)
|
||||
|
||||
if (evtHandle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
evtHandle = RegisterEventSource(NULL, "PostgreSQL");
|
||||
evtHandle = RegisterEventSource(NULL,
|
||||
event_source ? event_source : DEFAULT_EVENT_SOURCE);
|
||||
if (evtHandle == NULL)
|
||||
{
|
||||
evtHandle = INVALID_HANDLE_VALUE;
|
||||
@ -1406,6 +1408,9 @@ pgwin32_CommandLine(bool registration)
|
||||
free(dataDir);
|
||||
}
|
||||
|
||||
if (registration && event_source != NULL)
|
||||
appendPQExpBuffer(cmdLine, " -e \"%s\"", event_source);
|
||||
|
||||
if (registration && do_wait)
|
||||
appendPQExpBuffer(cmdLine, " -w");
|
||||
|
||||
@ -1878,6 +1883,10 @@ do_help(void)
|
||||
printf(_("\nCommon options:\n"));
|
||||
printf(_(" -D, --pgdata=DATADIR location of the database storage area\n"));
|
||||
printf(_(" -s, --silent only print errors, no informational messages\n"));
|
||||
#if defined(WIN32) || defined(__CYGWIN__)
|
||||
printf(_(" -e SOURCE event source to use for logging when running\n"
|
||||
" as a service\n"));
|
||||
#endif
|
||||
printf(_(" -t, --timeout=SECS seconds to wait when using -w option\n"));
|
||||
printf(_(" -V, --version output version information, then exit\n"));
|
||||
printf(_(" -w wait until operation completes\n"));
|
||||
@ -2140,7 +2149,7 @@ main(int argc, char **argv)
|
||||
/* process command-line options */
|
||||
while (optind < argc)
|
||||
{
|
||||
while ((c = getopt_long(argc, argv, "cD:l:m:N:o:p:P:sS:t:U:wW", long_options, &option_index)) != -1)
|
||||
while ((c = getopt_long(argc, argv, "cD:e:l:m:N:o:p:P:sS:t:U:wW", long_options, &option_index)) != -1)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
@ -2168,6 +2177,9 @@ main(int argc, char **argv)
|
||||
case 'm':
|
||||
set_mode(optarg);
|
||||
break;
|
||||
case 'e':
|
||||
event_source = pg_strdup(optarg);
|
||||
break;
|
||||
case 'N':
|
||||
register_servicename = pg_strdup(optarg);
|
||||
break;
|
||||
|
@ -26,7 +26,7 @@ HANDLE g_module = NULL; /* hModule of DLL */
|
||||
* The maximum length of a registry key is 255 characters.
|
||||
* http://msdn.microsoft.com/en-us/library/ms724872(v=vs.85).aspx
|
||||
*/
|
||||
char event_source[256] = "PostgreSQL";
|
||||
char event_source[256] = DEFAULT_EVENT_SOURCE;
|
||||
|
||||
/* Prototypes */
|
||||
HRESULT DllInstall(BOOL bInstall, LPCWSTR pszCmdLine);
|
||||
|
@ -154,6 +154,11 @@
|
||||
*/
|
||||
#define DEFAULT_PGSOCKET_DIR "/tmp"
|
||||
|
||||
/*
|
||||
* This is the default event source for Windows event log.
|
||||
*/
|
||||
#define DEFAULT_EVENT_SOURCE "PostgreSQL"
|
||||
|
||||
/*
|
||||
* The random() function is expected to yield values between 0 and
|
||||
* MAX_RANDOM_VALUE. Currently, all known implementations yield
|
||||
|
Loading…
x
Reference in New Issue
Block a user