* open-logfile returns null-output-port if logfile cannot be opened for writing

* No output to stderr anymore. Output now goes to syslog. If syslogging
  is disabled, bad luck.
This commit is contained in:
interp 2002-05-08 20:28:40 +00:00
parent 2f0397483b
commit ed0679bb85
1 changed files with 22 additions and 13 deletions

View File

@ -39,9 +39,17 @@
(define server/version "Scheme-Underground/1.0")
(define server/protocol "HTTP/1.0")
; default: no logging
; initialized by init-http-log!
;; default: no logging
;; initialized by init-http-log!
;; CLF-logging
;; if enabled, it will look like this:
;; (lambda req reply-code)
(define http-log (lambda a #f)) ; makes logging in CLF
;; syslogging
;; if enabled, it will look like this:
;; (lambda (level fmt . args)
(define http-syslog (lambda a #f)) ; makes syslog
(define *http-syslog?* #f) ; trigger used to avoid
; unnecessary computations
@ -52,8 +60,10 @@
(set! *http-log-port* port))
(define (init-http-log! options)
(init-http-port-log! (httpd-options-logfile options))
(init-http-syslog! (httpd-options-syslog? options)))
;; syslog has to be initialized befor CLF-logging
;; because it may generate syslog-messages
(init-http-syslog! (httpd-options-syslog? options))
(init-http-port-log! (httpd-options-logfile options)))
(define (init-http-port-log! logfile)
(let ((logport
@ -64,13 +74,13 @@
logfile)
((eq? logfile #f) ; no logging demanded
#f)
; unexpected value of logfile; we'll use (current-error-port) instead
; unexpected value of logfile;
(else
(format (current-error-port)
"[httpd] Warning: Logfile was not specified correctly (given: ~S).~%
Logging now to stderr.\n"
(http-syslog
(syslog-level warning)
"[httpd] Warning: Logfile was not specified correctly (given: ~S).~% No CLF logging."
logfile)
(current-error-port)))))
(make-null-output-port)))))
(if logfile ; if logging was specified, set up the logger
(let ((http-log-lock (make-lock)))
@ -130,7 +140,7 @@
(define (open-logfile logfile)
(with-errno-handler*
(lambda (errno packet)
(format (current-error-port)
(http-syslog (syslog-level warning)
"[httpd] Warning: An error occured while opening ~S for writing (~A).~%Send signal USR1 when the problem is fixed.~%"
logfile
(car packet))
@ -608,7 +618,6 @@
(if message (format out "<P>~%~a~%" message)))))
((= reply-code http-reply/internal-error)
(format (current-error-port) "ERROR: ~A~%" message)
(http-syslog (syslog-level error) "internal-error: ~A" message)
(if html-ok?
(begin