OK, I talked to Tom about this patch and I understand the issues now.
I think the best solution will be to have the postmaster start a child process that can read the guc variables and create a log file based on it contents. The child would be responsible to create a new log file every X seconds as specified in the postgresql.conf file.
OK, next round.
Backends wishing to read the log file would call a function to list the
contents of a directory. We can do this by creating a generic backend
super-user-only function that can list the contents of any directory.
If logfiles are located using directory listings, this would mean we should have well-known filename patterns instead of the current template stuff. So only the serverlog directory name would be selectable, if that makes still sense (I'd opt to drop that).
Then you would use an API to read a specific file, similar to the log reading functions you already have. In fact, you could set up the API so reading a directory would return a list of directory names so you don't need a separate directory listing function. (Does your API return file contents as one big text string or as lines. If you return it as one big text string, the directory idea will not work and you will need a separate function.)
We'd better have distinct functions. The current is for reading large chunks of data without interpretation of contents, and dir listing might need tweaking for win32.
Now I wonder if it's better to have generic superuser-only functions for list/read/write/delete (this would enable client-side editing of postgresql.conf), or tie the functions to logfiles only (in which case the logfile functions shouldn't use filenames but logfile timestamps).
I still believe the log process should write the current logfile filename to shared-mem (write-only), so backends can prevent deleting it.
So, we have:
o use pipe and dup to copy stdout and stderr to your postmaster child o new guc variables to specify log destination and rotation times o a server-side function to force a log rotate o API to list a directory and show file contents
I'll start on the log process.
Regards, Andreas
---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])