mirror of https://github.com/postgres/postgres
parent
e937156690
commit
8d1b6de57c
@ -0,0 +1,34 @@ |
||||
#
|
||||
# $Header: /cvsroot/pgsql/contrib/pg_logger/Attic/Makefile,v 1.1 2001/02/11 02:18:27 momjian Exp $
|
||||
#
|
||||
|
||||
subdir = contrib/pg_logger
|
||||
top_builddir = ../..
|
||||
include $(top_builddir)/src/Makefile.global |
||||
|
||||
OBJS = pg_logger.o
|
||||
|
||||
all: pg_logger |
||||
|
||||
pg_logger: $(OBJS) |
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
|
||||
|
||||
install: all installdirs |
||||
$(INSTALL_PROGRAM) pg_logger$(X) $(bindir)
|
||||
$(INSTALL_DATA) README.pg_logger $(docdir)/contrib
|
||||
|
||||
installdirs: |
||||
$(mkinstalldirs) $(bindir) $(docdir)/contrib
|
||||
|
||||
uninstall: |
||||
rm -f $(bindir)/pg_logger$(X) $(docdir)/contrib/README.pg_logger
|
||||
|
||||
clean distclean maintainer-clean: |
||||
rm -f pg_logger$(X) $(OBJS)
|
||||
|
||||
depend dep: |
||||
$(CC) -MM -MG $(CFLAGS) *.c > depend
|
||||
|
||||
ifeq (depend,$(wildcard depend)) |
||||
include depend |
||||
endif |
||||
@ -0,0 +1 @@ |
||||
Stdin-to-syslog gateway for PostgreSQL |
||||
@ -0,0 +1,85 @@ |
||||
/* pg_logger: stdin-to-syslog gateway for postgresql.
|
||||
* |
||||
* Copyright 2001 by Nathan Myers <ncm@nospam.cantrip.org> |
||||
* This software is distributed free of charge with no warranty of any kind. |
||||
* You have permission to make copies for any purpose, provided that (1)
|
||||
* this copyright notice is retained unchanged, and (2) you agree to
|
||||
* absolve the author of all responsibility for all consequences arising
|
||||
* from any use.
|
||||
*/ |
||||
|
||||
#include <stdio.h> |
||||
#include <stddef.h> |
||||
#include <syslog.h> |
||||
#include <string.h> |
||||
|
||||
struct { |
||||
const char *tag; |
||||
int size; |
||||
int priority; |
||||
} tags[] = { |
||||
{ "", 0, LOG_NOTICE }, |
||||
{ "emerg:", sizeof("emerg"), LOG_EMERG }, |
||||
{ "alert:", sizeof("alert"), LOG_ALERT }, |
||||
{ "crit:", sizeof("crit"), LOG_CRIT }, |
||||
{ "err:", sizeof("err"), LOG_ERR }, |
||||
{ "error:", sizeof("error"), LOG_ERR }, |
||||
{ "warning:", sizeof("warning"), LOG_WARNING }, |
||||
{ "notice:", sizeof("notice"), LOG_NOTICE }, |
||||
{ "info:", sizeof("info"), LOG_INFO }, |
||||
{ "debug:", sizeof("debug"), LOG_DEBUG } |
||||
}; |
||||
|
||||
int main() |
||||
{ |
||||
char buf[301]; |
||||
int c; |
||||
char *pos = buf; |
||||
const char *colon = 0; |
||||
|
||||
#ifndef DEBUG |
||||
openlog("postgresql", LOG_CONS, LOG_LOCAL1); |
||||
#endif |
||||
while ( (c = getchar()) != EOF) { |
||||
if (c == '\r') { |
||||
continue; |
||||
} |
||||
if (c == '\n') { |
||||
int level = sizeof(tags)/sizeof(*tags); |
||||
char *bol; |
||||
|
||||
if (colon == 0 || (size_t)(colon - buf) > sizeof("warning")) { |
||||
level = 1; |
||||
} |
||||
*pos = 0; |
||||
while (--level) { |
||||
if (pos - buf >= tags[level].size |
||||
&& strncmp(buf, tags[level].tag, tags[level].size) == 0) { |
||||
break;
|
||||
} |
||||
} |
||||
bol = buf + tags[level].size; |
||||
if (bol > buf && *bol == ' ') { |
||||
++bol; |
||||
} |
||||
if (pos - bol > 0) { |
||||
#ifndef DEBUG |
||||
syslog(tags[level].priority, "%s", bol); |
||||
#else |
||||
printf("%d/%s\n", tags[level].priority, bol); |
||||
#endif |
||||
} |
||||
pos = buf; |
||||
colon = (char const *)0; |
||||
continue; |
||||
} |
||||
if (c == ':' && !colon) { |
||||
colon = pos; |
||||
} |
||||
if ((size_t)(pos - buf) < sizeof(buf)-1) { |
||||
*pos++ = c; |
||||
} |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
Loading…
Reference in new issue