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
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers