sexpr-based logging for spiffy pasted by mario-goulart on Wed Aug 24 16:15:22 2011
(handle-access-logging (lambda () (let ((h (request-headers (current-request)))) (log-to (access-log) "(\"~A\" \"~A\" ~A \"~A\" ~A.~A ~A \"~A\" \"~A\")" (remote-address) (seconds->string (current-seconds)) (request-method (current-request)) (uri->string (request-uri (current-request))) (request-major (current-request)) (request-minor (current-request)) (response-code (current-response)) (uri->string (header-value 'referer h (uri-reference "-"))) (let ((product (header-contents 'user-agent h))) (if product (product-unparser product) "**Unknown product**")))))) (define-record log-line ip date method uri http-version code referer user-agent)
~S added by mario-goulart on Wed Aug 24 16:24:42 2011
(handle-access-logging
(lambda ()
(let ((h (request-headers (current-request))))
(log-to (access-log)
"~S"
(list (remote-address)
(seconds->string (current-seconds))
(request-method (current-request))
(uri->string (request-uri (current-request)))
(string->number
(conc (request-major (current-request)) "."
(request-minor (current-request))))
(response-code (current-response))
(uri->string (header-value 'referer h (uri-reference "-")))
(let ((product (header-contents 'user-agent h)))
(if product
(product-unparser product)
"**Unknown product**")))))))