Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display Postgres server logs output in terminal and record to logs at same time

Tags:

postgresql

I'm running Postgres 9.1 (Homebrew installation on Mac OSX) and I'd like to monitor my postgres server more closely.

My question relates to logs. I'd like to get the logs displaying in a terminal pane. Here's what the Postgres docs say about the logs:

"On Unix-like systems, by default, the server's standard output and standard error are sent to pg_ctl's standard output (not standard error). The standard output of pg_ctl should then be redirected to a file or piped to another process such as a log rotating program like rotatelogs; otherwise postgres will write its output to the controlling terminal (from the background) and will not leave the shell's process group. On Windows, by default the server's standard output and standard error are sent to the terminal. These default behaviors can be changed by using -l to append the server's output to a log file. Use of either -l or output redirection is recommended."

So, when I get my postgres server running with the following:

pg_ctl start -D /usr/local/var/postgres

The logs display in the terminal window. When I run:

pg_ctl start -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log

the logs go to my logfile and don't display in terminal.

In short, it would be great if anyone can tell me what command I use after I've directed logs to the file (with the second command) to make the logs also appear at the command line. It helps when I'm developing (in Django) to watch the SQL statements get executed in real time.

like image 903
Pat Avatar asked Aug 04 '12 03:08

Pat


People also ask

How do I log into PostgreSQL from terminal?

There are two ways to login PostgreSQL: By running the "psql" command as a UNIX user which is also configured as PostgreSQL user using so-called IDENT/PEER authentication, e.g., " sudo -u postgres psql ". Via TCP/IP connection using PostgreSQL's own managed username/password (using so-called MD5 authentication).

What is stderr in Postgres?

stderr. This is probably the most common log destination (it's the default, after all) and can get fairly complicated in itself. Selecting stderr instructs PostgreSQL to send log data to the “stderr” (short for “standard error”) output stream most operating systems give every new process by default.


2 Answers

I was able to find the logs in:

less /var/log/postgresql/postgresql-10-main.log

using ubuntu 18.04 with postgresql version: 10

like image 143
rbashish Avatar answered Oct 14 '22 20:10

rbashish


You could watch the log with the command:

tail -f /usr/local/var/postgres/server.log
like image 44
Eelke Avatar answered Oct 14 '22 19:10

Eelke