3proxy/doc/html
Vladimir Dubrovin d613750b94 Logs: a logger for each log string, shared and closed once unused
A logger (struct logger) is identified by the string log or -l gives it:
"" stdout, "/dev/null" none, "@IDENT" syslog, "&DSN" ODBC, "radius",
anything else a file. Each type (struct logtype) has init, formatting of
a connection into a buffer, writing, close, and a periodic tick for
rotation and flushing; ODBC and RADIUS register their types from 3proxy,
which alone has them. Services and configurations hold the logger they
use; the last to let go closes it, except the standard ones (none,
stdout, stderr, syslog), which are opened at startup and kept.

-l takes every log type now, and a file named by several services or by
both log and -l is opened once. rotate and archiver are bound to the
logger of the last log command when its configuration comes into force,
and every file logger is rotated by the main loop.

Errors with no connection go to a new stderr logger; after daemon, or as
a Windows service, stdout logging writes nothing and errors go to the
last log configured. A log whose writes keep failing is closed and
reopened; while it cannot be, its lines go to stderr and it is retried
every minute. ODBC's own reconnection throttle gives way to this.

Formatting (logbuf) is separate from counting traffic and clearing the
statistics, done once by logdo(), the services' log function, so a later
step can format or copy a connection's line and write it from a thread
of its own. dologname() and timechanged() move to log.c, which the
standalone services link as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 11:44:55 +03:00
..
devel Pre-allocate client/server/tmp/etc buffers with client structure 2026-10-12 17:19:55 +03:00
man5 Logs: a logger for each log string, shared and closed once unused 2026-10-23 11:44:55 +03:00
man8 Share one listening socket among services on one address 2026-10-15 12:31:50 +03:00
plugins Transparent moved to main code (TransparentPlugin removed), BSD pf support added 2026-08-26 14:34:44 +03:00
faqe.html make html formatting compatible with .md 2026-08-01 11:47:50 +03:00
faqr.html make html formatting compatible with .md 2026-08-01 11:47:50 +03:00
highload.html highload.html: kernel TLS, splice() heuristics, grace delay by traffic 2026-10-14 19:14:46 +03:00
howtoe.html Document that an IPv6 nserver address needs square brackets 2026-09-16 15:04:08 +03:00
howtor.html Document that an IPv6 nserver address needs square brackets 2026-09-16 15:04:08 +03:00
index.html Update HTML documentation from man pages 2026-08-22 11:28:42 +00:00
securityen.html Fix MitM for MacOS clients (openssl only) 2026-08-26 11:54:04 +03:00