diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index d4dbbc1b04..eabe3392b8 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "7.2.0.6") +(define version "7.2.0.7") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/pkgs/racket-doc/scribblings/reference/logging.scrbl b/pkgs/racket-doc/scribblings/reference/logging.scrbl index 6136135c1c..8a7ac27bf6 100644 --- a/pkgs/racket-doc/scribblings/reference/logging.scrbl +++ b/pkgs/racket-doc/scribblings/reference/logging.scrbl @@ -160,7 +160,7 @@ is evaluated. [level log-level/c] [topic (or/c symbol? #f) (logger-name logger)] [message string?] - [data any/c] + [data any/c #f] [prefix-message? any/c #t]) void?]{ @@ -174,7 +174,8 @@ addition, if @racket[topic] and @racket[prefix-message?] are not @racket[#f], then @racket[message] is prefixed with the topic followed by @racket[": "] before it is sent to receivers. -@history[#:changed "6.0.1.10" @elem{Added the @racket[prefix-message?] argument.}]} +@history[#:changed "6.0.1.10" @elem{Added the @racket[prefix-message?] argument.} + #:changed "7.2.0.7" @elem{Made the @racket[data] argument optional.}]} @defproc[(log-level? [logger logger?] diff --git a/pkgs/racket-test-core/tests/racket/logger.rktl b/pkgs/racket-test-core/tests/racket/logger.rktl index 69a1a85d2d..7c05835127 100644 --- a/pkgs/racket-test-core/tests/racket/logger.rktl +++ b/pkgs/racket-test-core/tests/racket/logger.rktl @@ -319,6 +319,21 @@ exn:fail:contract? #rx"define-logger: contract violation.+expected: \\(or/c logger\\? #f\\).+given: 'not-a-logger") +; -------------------- +;; optional data for `log-message` + +(let () + (define logger (make-logger)) + (define m (make-log-receiver logger 'error)) + (log-message logger 'error 'whatever "hi") + (test '#(error "whatever: hi" #f whatever) sync m)) + +(let () + (define logger (make-logger)) + (define m (make-log-receiver logger 'error)) + (log-message logger 'error "hi") + (test '#(error "hi" #f #f) sync m)) + ; -------------------- (report-errs) diff --git a/racket/src/io/logger/main.rkt b/racket/src/io/logger/main.rkt index 8a16526bf1..bef09d6281 100644 --- a/racket/src/io/logger/main.rkt +++ b/racket/src/io/logger/main.rkt @@ -93,15 +93,26 @@ (define/who log-message ;; Complex dispatch based on number and whether third is a string: (case-lambda - [(logger level message data) + [(logger level message) (define topic (and (logger? logger) (logger-name logger))) - (do-log-message who logger level topic message data #t)] + (do-log-message who logger level topic message #f #t)] + [(logger level topic/message message/data) + (cond + [(string? topic/message) + (define topic (and (logger? logger) (logger-name logger))) + (do-log-message who logger level topic topic/message message/data #t)] + [(or (not topic/message) (symbol? topic/message)) + (do-log-message who logger level topic/message message/data #f #t)] + [else + (check who logger? logger) + (check-level who level) + (raise-argument-error who "(or/c string? symbol?)" topic/message)])] [(logger level topic/message message/data data/prefix?) (cond [(string? topic/message) (define topic (and (logger? logger) (logger-name logger))) (do-log-message who logger level topic topic/message message/data data/prefix?)] - [(symbol? topic/message) + [(or (not topic/message) (symbol? topic/message)) (do-log-message who logger level topic/message message/data data/prefix? #t)] [else (check who logger? logger) diff --git a/racket/src/racket/src/error.c b/racket/src/racket/src/error.c index aa4c46f9b9..879641a115 100644 --- a/racket/src/racket/src/error.c +++ b/racket/src/racket/src/error.c @@ -815,7 +815,7 @@ void scheme_init_error(Scheme_Startup_Env *env) ADD_NONCM_PRIM("make-logger", make_logger, 0, -1, env); ADD_NONCM_PRIM("make-log-receiver", make_log_reader, 2, -1, env); - ADD_PRIM_W_ARITY("log-message", log_message, 4, 6, env); + ADD_PRIM_W_ARITY("log-message", log_message, 3, 6, env); ADD_FOLDING_PRIM("logger?", logger_p, 1, 1, 1, env); ADD_FOLDING_PRIM("logger-name", logger_name, 1, 1, 1, env); ADD_FOLDING_PRIM("log-receiver?", log_reader_p, 1, 1, 1, env); @@ -4062,6 +4062,7 @@ log_message(int argc, Scheme_Object *argv[]) Scheme_Logger *logger; Scheme_Object *bytes; Scheme_Object *name; + Scheme_Object *data; int level, pos, pfx; if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_logger_type)) @@ -4086,9 +4087,14 @@ log_message(int argc, Scheme_Object *argv[]) pfx = SCHEME_TRUEP(argv[pos+1]); else pfx = 1; + + if (pos >= argc) + data = scheme_false; + else + data = argv[pos]; scheme_log_name_pfx_message(logger, level, name, - SCHEME_BYTE_STR_VAL(bytes), SCHEME_BYTE_STRLEN_VAL(bytes), argv[pos], + SCHEME_BYTE_STR_VAL(bytes), SCHEME_BYTE_STRLEN_VAL(bytes), data, pfx); return scheme_void; diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index 1d3a4fc0e9..d5a4115546 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "7.2.0.6" +#define MZSCHEME_VERSION "7.2.0.7" #define MZSCHEME_VERSION_X 7 #define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 6 +#define MZSCHEME_VERSION_W 7 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)