Better logging small bug in wv-dialog, conversion to stdio.
This commit is contained in:
+45
-5
@@ -448,18 +448,58 @@
|
||||
(dispatch-protocol-message message)
|
||||
(loop)))))))))
|
||||
|
||||
(define (log-backend-message level message [elapsed #f])
|
||||
(define formatted
|
||||
(if (number? elapsed)
|
||||
(format "~a: ~a" elapsed message)
|
||||
message))
|
||||
(case level
|
||||
((error err)
|
||||
(err-webview-backend "~a" formatted))
|
||||
((warning warn)
|
||||
(warn-webview-backend "~a" formatted))
|
||||
((info)
|
||||
(info-webview-backend "~a" formatted))
|
||||
(else
|
||||
(dbg-webview-backend "~a" formatted))))
|
||||
|
||||
(define (log-structured-backend-line line)
|
||||
(with-handlers
|
||||
((exn:fail?
|
||||
(lambda (exception)
|
||||
(warn-webview-backend
|
||||
"Invalid structured backend log: ~a; line: ~a"
|
||||
(exn-message exception)
|
||||
line))))
|
||||
(define entry (string->jsexpr (substring line 5)))
|
||||
(unless (hash? entry)
|
||||
(error 'log-structured-backend-line "JSON object expected"))
|
||||
(define level-value (hash-ref entry 'level "debug"))
|
||||
(define level
|
||||
(cond
|
||||
((symbol? level-value) level-value)
|
||||
((string? level-value) (string->symbol (string-downcase level-value)))
|
||||
(else 'debug)))
|
||||
(define message (hash-ref entry 'message ""))
|
||||
(define elapsed (hash-ref entry 'elapsed #f))
|
||||
(log-backend-message level (format "~a" message) elapsed)))
|
||||
|
||||
(define (log-backend-line line)
|
||||
(cond
|
||||
((string-prefix? line "json:")
|
||||
(log-structured-backend-line line))
|
||||
((regexp-match? #rx"^ERROR[ ]*:" line)
|
||||
(err-webview "qt: ~a" line))
|
||||
(err-webview-backend "~a" line))
|
||||
((regexp-match? #rx"^WARNING[ ]*:" line)
|
||||
(warn-webview "qt: ~a" line))
|
||||
(warn-webview-backend "~a" line))
|
||||
((regexp-match? #rx"^INFO[ ]*:" line)
|
||||
(info-webview "qt: ~a" line))
|
||||
(info-webview-backend "~a" line))
|
||||
((regexp-match? #rx"^DEBUG[ ]*:" line)
|
||||
(dbg-webview "qt: ~a" line))
|
||||
(dbg-webview-backend "~a" line))
|
||||
(else
|
||||
(dbg-webview "qt: ~a" line))))
|
||||
;; Libraries used by Qt may occasionally write unstructured text to
|
||||
;; stderr. Keep it visible without confusing it with protocol output.
|
||||
(dbg-webview-backend "~a" line))))
|
||||
|
||||
(define (start-error-forwarder!)
|
||||
(set!
|
||||
|
||||
Reference in New Issue
Block a user