Skip to content

Commit 69b41b2

Browse files
committed
Added pgut/logger.h and pgut/logger.c for message logging
1 parent eb97837 commit 69b41b2

File tree

6 files changed

+142
-78
lines changed

6 files changed

+142
-78
lines changed

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ OBJS = backup.o \
2020
xlogreader.o \
2121
streamutil.o \
2222
receivelog.o \
23-
pgut/pgut.o
23+
pgut/pgut.o \
24+
pgut/logger.o
2425

2526
EXTRA_CLEAN = datapagemap.c datapagemap.h xlogreader.c receivelog.c receivelog.h streamutil.c streamutil.h logging.h
2627

pg_probackup.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,24 @@
1515
#include <limits.h>
1616
#include "libpq-fe.h"
1717

18-
#include "pgut/pgut.h"
18+
#ifndef WIN32
19+
#include <sys/mman.h>
20+
#endif
21+
22+
#include "access/timeline.h"
1923
#include "access/xlogdefs.h"
2024
#include "access/xlog_internal.h"
2125
#include "catalog/pg_control.h"
22-
#include "utils/pg_crc.h"
23-
#include "parray.h"
24-
#include "datapagemap.h"
25-
#include "storage/bufpage.h"
2626
#include "storage/block.h"
27+
#include "storage/bufpage.h"
2728
#include "storage/checksum.h"
28-
#include "access/timeline.h"
29+
#include "utils/pg_crc.h"
30+
31+
#include "pgut/pgut.h"
32+
33+
#include "datapagemap.h"
34+
#include "parray.h"
2935

30-
#ifndef WIN32
31-
#include <sys/mman.h>
32-
#endif
3336

3437
/* Directory/File names */
3538
#define DATABASE_DIR "database"

pgut/logger.c

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* logger.c: - log events into csv-file or stderr.
4+
*
5+
* Portions Copyright (c) 2017-2017, Postgres Professional
6+
*
7+
*-------------------------------------------------------------------------
8+
*/
9+
10+
#include "postgres_fe.h"
11+
12+
#include "logger.h"
13+
14+
/* Logger parameters */
15+
16+
int log_destination = LOG_DESTINATION_STDERR;
17+
int log_level = INFO;
18+
bool quiet = false;
19+
20+
char *log_filename = NULL;
21+
char *log_error_filename = NULL;
22+
char *log_directory = NULL;
23+
24+
int log_rotation_size = 0;
25+
int log_rotation_age = 0;
26+
27+
/*
28+
* elog - log to stderr or to log file and exit if ERROR or FATAL
29+
*/
30+
void
31+
elog(int elevel, const char *fmt, ...)
32+
{
33+
va_list args;
34+
35+
/* Do not log message if severity level is less than log_level */
36+
if (elevel < log_level)
37+
{
38+
/* But exit with code it severity level is higher than WARNING */
39+
if (elevel > WARNING)
40+
exit(elevel);
41+
42+
return;
43+
}
44+
45+
if (quiet && elevel < WARNING)
46+
return;
47+
48+
switch (elevel)
49+
{
50+
case LOG:
51+
fputs("LOG: ", stderr);
52+
break;
53+
case INFO:
54+
fputs("INFO: ", stderr);
55+
break;
56+
case NOTICE:
57+
fputs("NOTICE: ", stderr);
58+
break;
59+
case WARNING:
60+
fputs("WARNING: ", stderr);
61+
break;
62+
case FATAL:
63+
fputs("FATAL: ", stderr);
64+
break;
65+
case PANIC:
66+
fputs("PANIC: ", stderr);
67+
break;
68+
default:
69+
if (elevel >= ERROR)
70+
fputs("ERROR: ", stderr);
71+
break;
72+
}
73+
74+
va_start(args, fmt);
75+
vfprintf(stderr, fmt, args);
76+
fputc('\n', stderr);
77+
fflush(stderr);
78+
va_end(args);
79+
80+
if (elevel > WARNING)
81+
exit(elevel);
82+
}

pgut/logger.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* logger.h: - prototypes of logger functions.
4+
*
5+
* Portions Copyright (c) 2017-2017, Postgres Professional
6+
*
7+
*-------------------------------------------------------------------------
8+
*/
9+
10+
#ifndef LOGGER_H
11+
#define LOGGER_H
12+
13+
/* Log destination bitmap */
14+
#define LOG_DESTINATION_STDERR 1
15+
#define LOG_DESTINATION_LOGFILE 2
16+
17+
/* Log level */
18+
#define VERBOSE (-5)
19+
#define LOG (-4)
20+
#define INFO (-3)
21+
#define NOTICE (-2)
22+
#define WARNING (-1)
23+
#define ERROR 1
24+
#define FATAL 2
25+
#define PANIC 3
26+
27+
/* Logger parameters */
28+
29+
extern int log_destination;
30+
extern int log_level;
31+
extern bool quiet;
32+
33+
extern char *log_filename;
34+
extern char *log_error_filename;
35+
extern char *log_directory;
36+
37+
extern int log_rotation_size;
38+
extern int log_rotation_age;
39+
40+
#undef elog
41+
extern void elog(int elevel, const char *fmt, ...) pg_attribute_printf(2, 3);
42+
43+
#endif /* LOGGER_H */

pgut/pgut.c

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <time.h>
1616
#include <unistd.h>
1717

18+
#include "logger.h"
1819
#include "pgut.h"
1920

2021
/* old gcc doesn't have LLONG_MAX. */
@@ -34,7 +35,6 @@ const char *port = NULL;
3435
const char *username = NULL;
3536
char *password = NULL;
3637
bool verbose = false;
37-
bool quiet = false;
3838
bool prompt_password = true;
3939

4040
/* Database connections */
@@ -1032,55 +1032,6 @@ pgut_wait(int num, PGconn *connections[], struct timeval *timeout)
10321032
return -1;
10331033
}
10341034

1035-
/*
1036-
* elog - log to stderr and exit if ERROR or FATAL
1037-
*/
1038-
void
1039-
elog(int elevel, const char *fmt, ...)
1040-
{
1041-
va_list args;
1042-
1043-
if (!verbose && elevel <= LOG)
1044-
return;
1045-
if (quiet && elevel < WARNING)
1046-
return;
1047-
1048-
switch (elevel)
1049-
{
1050-
case LOG:
1051-
fputs("LOG: ", stderr);
1052-
break;
1053-
case INFO:
1054-
fputs("INFO: ", stderr);
1055-
break;
1056-
case NOTICE:
1057-
fputs("NOTICE: ", stderr);
1058-
break;
1059-
case WARNING:
1060-
fputs("WARNING: ", stderr);
1061-
break;
1062-
case FATAL:
1063-
fputs("FATAL: ", stderr);
1064-
break;
1065-
case PANIC:
1066-
fputs("PANIC: ", stderr);
1067-
break;
1068-
default:
1069-
if (elevel >= ERROR)
1070-
fputs("ERROR: ", stderr);
1071-
break;
1072-
}
1073-
1074-
va_start(args, fmt);
1075-
vfprintf(stderr, fmt, args);
1076-
fputc('\n', stderr);
1077-
fflush(stderr);
1078-
va_end(args);
1079-
1080-
if (elevel > 0)
1081-
exit_or_abort(elevel);
1082-
}
1083-
10841035
void pg_log(eLogType type, const char *fmt, ...)
10851036
{
10861037
va_list args;

pgut/pgut.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#include <assert.h>
1717
#include <sys/time.h>
1818

19+
#include "logger.h"
20+
1921
#if !defined(C_H) && !defined(__cplusplus)
2022
#ifndef bool
2123
typedef char bool;
@@ -84,7 +86,6 @@ extern const char *port;
8486
extern const char *username;
8587
extern char *password;
8688
extern bool verbose;
87-
extern bool quiet;
8889
extern bool prompt_password;
8990

9091
extern bool interrupted;
@@ -126,23 +127,6 @@ extern char *strdup_trim(const char *str);
126127
*/
127128
extern FILE *pgut_fopen(const char *path, const char *mode, bool missing_ok);
128129

129-
/*
130-
* elog
131-
*/
132-
#define VERBOSE (-5)
133-
#define LOG (-4)
134-
#define INFO (-3)
135-
#define NOTICE (-2)
136-
#define WARNING (-1)
137-
#define ERROR 1
138-
#define FATAL 2
139-
#define PANIC 3
140-
141-
#undef elog
142-
extern void
143-
elog(int elevel, const char *fmt, ...)
144-
__attribute__((format(printf, 2, 3)));
145-
146130
/*
147131
* Assert
148132
*/

0 commit comments

Comments
 (0)