Feature proposal: distinguish each PostgreSQL instance in the event log - Mailing list pgsql-hackers

From MauMau
Subject Feature proposal: distinguish each PostgreSQL instance in the event log
Date
Msg-id ima49q$1v7g$1@news.hub.org
Whole thread Raw
Responses Re: Feature proposal: distinguish each PostgreSQL instance in the event log
Re: Feature proposal: distinguish each PostgreSQL instance in the event log
List pgsql-hackers
Hello,

I have several software products which use PostgreSQL as a data repository 
and embed the same PostgreSQL binaries. Currently, those software support 
Linux. I'm trying to port them to Windows.

I've encountered one problem on Windows. I need to support running all of my 
products on one host simultaneously. Plus, I need to log messages in 
syslog/event log. On Linux, I can distinguish the messages of one product 
and those of other products by setting syslog_ident in postgresql.conf. On 
the other hand, I can't do that on Windows: all of the PostgreSQL instances 
use the same fixed event source name "PostgreSQL".

SO I'd like to propose a trivial feature which allows users to set event 
source. As I'm a newbie and this is my first proposal, I might behave 
inappropriately in the development process. Please point out if you notice I 
should act better. I've read the following site.

Development information
http://wiki.postgresql.org/wiki/Developer_and_Contributor_Resources


Functional specification
========================================

[Current usage]
To enable event logging:
1. Register the event source "PostgreSQL" with the registry: c:\> regsvr32.exe <path of pgevent.dll>
2. Add 'eventlog' to log_destination parameter.

To disable event logging:
1. Remove 'eventlog' from log_destination parameter.
2. Deregister the event source "PostgreSQL" from the registry. c:\> regsvr32.exe /u <path of pgevent.dll>

[New usage]
To use the default event source "PostgreSQL", the usage is the same as now. 
To use other event sources, add a bit of information.

To enable event logging:
1. Register the event source with the registry: c:\> regsvr32.exe /i:<event source> <path of pgevent.dll>
ex. To register "MyApp" event source: c:\> regsvr32.exe /i:"MyApp" pgevent.dll
2. Add 'eventlog' to log_destination parameter.
3. Name the event source with the new "event_source" parameter of 
postgresql.conf.
ex. event_source = 'MyApp'

To disable event logging:
1. Remove event_source parameter.
2. Remove 'eventlog' from log_destination parameter.
3. Deregister the event source from the registry. c:\> regsvr32.exe /u /i:<event source> <path of pgevent.dll>
ex. To deregister "MyApp" event source: c:\> regsvr32.exe /u /i:"MyApp" pgevent.dll


<<Considerations>>
Is it better to have one parameter for syslog program name and event source, 
instead of having both syslog_ident and event_source?
If it is, what name is good for the parameter? How about "program_name"?
ex. program_name = 'MyApp'
In this case, the traditional syslog_ident parameter is kept as an alias for 
backward compatibility, like the relationship between work_mem and sort_mem.

If we have syslog_ident and event_source parameters separately, we will 
probably end up in having similar functions as follows:
guc.c: assign_syslog_ident() and assign_event_source()
elog.c: set_syslog_parameters() and set_eventlog_parameters()

Does the community prefer separate parameters for each purpose (syslog and 
event log) at the expense of a bit duplicate code, or one unified parameter 
(program_name) with less code?

I would appreciate your opinions and advice. I'll try making the patch while 
I'm waiting for response. I would be very much pleased if I could contribute 
to PostgreSQL and my proposal could be included in 9.1.

Regards
MauMau



pgsql-hackers by date:

Previous
From: KONDO Mitsumasa
Date:
Subject: Re: 2nd Level Buffer Cache
Next
From: Andrew Dunstan
Date:
Subject: Re: Feature proposal: distinguish each PostgreSQL instance in the event log