r2270 - trunk/varnish-cache/bin/varnishncsa
Anders Nordby
anders at fupp.net
Tue Nov 20 17:41:57 CET 2007
Hi,
Finally I can use varnishncsa with a newsyslog to rotate the logs.
Great, thanks!
Other wishes:
- It would be nice if varnishncsa could also log different virtual hosts
in different files, and also make it possible to choose which virtual
hosts to log for/not.
- It would be nice to be able to specify what to log, as in Apache
CustomLog/LogFormat.
:-)
On Tue, Nov 20, 2007 at 03:55:49PM +0100, des at projects.linpro.no wrote:
> Author: des
> Date: 2007-11-20 15:55:49 +0100 (Tue, 20 Nov 2007)
> New Revision: 2270
>
> Modified:
> trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
> Log:
> Make SIGHUP work: VSL_Dispatch() will not return as long as it has data
> to feed to h_ncsa(), so it is up to h_ncsa() to interrupt it if reopen
> is non-zero.
>
> Also remove a superfluous call to VSL_Arg() as was previously done in
> varnishlog(1).
>
>
> Modified: trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
> ===================================================================
> --- trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2007-11-20 14:32:01 UTC (rev 2269)
> +++ trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2007-11-20 14:55:49 UTC (rev 2270)
> @@ -80,6 +80,8 @@
> #include "shmlog.h"
> #include "varnishapi.h"
>
> +static volatile sig_atomic_t reopen;
> +
> static struct logline {
> char *df_H; /* %H, Protocol version */
> char *df_Host; /* %{Host}i */
> @@ -187,7 +189,7 @@
> end = ptr + len;
>
> if (!(spec & VSL_S_CLIENT || spec & VSL_S_BACKEND))
> - return (0);
> + return (reopen);
>
> if (fd >= nll) {
> struct logline **newll = ll;
> @@ -315,11 +317,11 @@
> }
>
> if ((spec & VSL_S_CLIENT) && tag != SLT_ReqEnd)
> - return (0);
> + return (reopen);
>
> if ((spec & VSL_S_BACKEND) && tag != SLT_BackendReuse &&
> (tag != SLT_BackendClose || lp->df_Uq))
> - return (0);
> + return (reopen);
>
> if (tag == SLT_ReqEnd) {
> if (sscanf(ptr, "%*u %*u.%*u %ld.", &l) != 1)
> @@ -407,13 +409,11 @@
> #undef freez
> lp->bogus = 0;
>
> - return (0);
> + return (reopen);
> }
>
> /*--------------------------------------------------------------------*/
>
> -static volatile sig_atomic_t reopen;
> -
> static void
> sighup(int sig)
> {
> @@ -447,7 +447,7 @@
> int
> main(int argc, char *argv[])
> {
> - int i, c;
> + int c;
> int a_flag = 0, D_flag = 0;
> const char *n_arg = NULL;
> const char *P_arg = NULL;
> @@ -459,11 +459,6 @@
> vd = VSL_New();
>
> while ((c = getopt(argc, argv, VSL_ARGS "aDn:P:Vw:")) != -1) {
> - i = VSL_Arg(vd, c, optarg);
> - if (i < 0)
> - exit (1);
> - if (i > 0)
> - continue;
> switch (c) {
> case 'a':
> a_flag = 1;
> @@ -516,7 +511,7 @@
> of = stdout;
> }
>
> - while (VSL_Dispatch(vd, h_ncsa, of) == 0) {
> + while (VSL_Dispatch(vd, h_ncsa, of) >= 0) {
> if (fflush(of) != 0) {
> perror(w_arg);
> exit(1);
>
> _______________________________________________
> varnish-commit mailing list
> varnish-commit at projects.linpro.no
> http://projects.linpro.no/mailman/listinfo/varnish-commit
--
Anders.
More information about the varnish-commit
mailing list