diff mbox series

[bug#45588] services: postgresql: Log from pg_ctl.

Message ID 20210101101015.6524-1-mail@cbaines.net
State Accepted
Headers show
Series [bug#45588] services: postgresql: Log from pg_ctl. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Christopher Baines Jan. 1, 2021, 10:10 a.m. UTC
pg_ctl will output errors when starting PostgreSQL, for example about errors
in the configuration file. Without getting pg_ctl to log to a file, I'm not
sure how to find those errors.

* gnu/services/databases.scm (postgresql-activation): Create
/var/log/postgresql.
(postgresql-shepherd-service): Pass --log=/var/log/postgresql/pg_ctl to
pg_ctl.
---
 gnu/services/databases.scm | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Mathieu Othacehe Jan. 6, 2021, 9:22 a.m. UTC | #1
Hello Chris,

> pg_ctl will output errors when starting PostgreSQL, for example about errors
> in the configuration file. Without getting pg_ctl to log to a file, I'm not
> sure how to find those errors.

On Ubuntu, I noticed that pg_ctl logs are located in
'/var/log/postgresql/postgresql-12-main.log'.

Turns out it's using a Debian wrapper called pg_ctlcluster around pg_ctl
that is setting up logging between other things.

You could maybe call the log file 'pg_ctl.log', otherwise seems fine.

Thanks,

Mathieu
Mathieu Othacehe Jan. 14, 2021, 1:51 p.m. UTC | #2
Hello Chris,

> You could maybe call the log file 'pg_ctl.log', otherwise seems fine.

I added what you proposed to a patch refactoring PostgreSQL service
here: https://issues.guix.gnu.org/45860.

Thanks,

Mathieu
Christopher Baines Feb. 22, 2021, 10:30 p.m. UTC | #3
Christopher Baines <mail@cbaines.net> writes:

> pg_ctl will output errors when starting PostgreSQL, for example about errors
> in the configuration file. Without getting pg_ctl to log to a file, I'm not
> sure how to find those errors.
>
> * gnu/services/databases.scm (postgresql-activation): Create
> /var/log/postgresql.
> (postgresql-shepherd-service): Pass --log=/var/log/postgresql/pg_ctl to
> pg_ctl.
> ---
>  gnu/services/databases.scm | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
> index d2dc5f0da8..479a3c56f7 100644
> --- a/gnu/services/databases.scm
> +++ b/gnu/services/databases.scm
> @@ -205,6 +205,10 @@ host	all	all	::1/128 	md5"))
>             (mkdir-p #$data-directory)
>             (chown #$data-directory (passwd:uid user) (passwd:gid user))
>  
> +           ;; Create log directory
> +           (mkdir-p "/var/log/postgresql")
> +           (chown "/var/log/postgresql" (passwd:uid user) (passwd:gid user))
> +
>             ;; Drop privileges and init state directory in a new
>             ;; process.  Wait for it to finish before proceeding.
>             (match (primitive-fork)
> @@ -247,6 +251,7 @@ host	all	all	::1/128 	md5"))
>                         (setgid (passwd:gid user))
>                         (setuid (passwd:uid user))
>                         (execl pg_ctl pg_ctl "-D" #$data-directory "-o" options
> +                              "--log=/var/log/postgresql/pg_ctl"
>                                mode)))))))
>              (pid-file (in-vicinity data-directory "postmaster.pid"))
>              (action (lambda args

This conflicts with
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=fe4b8823505c3271fc3eacaa93c30a5cec078739
diff mbox series

Patch

diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index d2dc5f0da8..479a3c56f7 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -205,6 +205,10 @@  host	all	all	::1/128 	md5"))
            (mkdir-p #$data-directory)
            (chown #$data-directory (passwd:uid user) (passwd:gid user))
 
+           ;; Create log directory
+           (mkdir-p "/var/log/postgresql")
+           (chown "/var/log/postgresql" (passwd:uid user) (passwd:gid user))
+
            ;; Drop privileges and init state directory in a new
            ;; process.  Wait for it to finish before proceeding.
            (match (primitive-fork)
@@ -247,6 +251,7 @@  host	all	all	::1/128 	md5"))
                        (setgid (passwd:gid user))
                        (setuid (passwd:uid user))
                        (execl pg_ctl pg_ctl "-D" #$data-directory "-o" options
+                              "--log=/var/log/postgresql/pg_ctl"
                               mode)))))))
             (pid-file (in-vicinity data-directory "postmaster.pid"))
             (action (lambda args