log-message: make data argument optional
The intent was never for the data argument to be optional, but a mistake in traditional Racket's argument dispatch for `log-message` made it optional in some cases, so the simplest way forward is to make it consistently optional. Repair traditional Racket to use `#f` instead of a random value when the data argument is not provided.
This commit is contained in:
parent
d71d68e72a
commit
29ad80905e
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
(define collection 'multi)
|
(define collection 'multi)
|
||||||
|
|
||||||
(define version "7.2.0.6")
|
(define version "7.2.0.7")
|
||||||
|
|
||||||
(define deps `("racket-lib"
|
(define deps `("racket-lib"
|
||||||
["racket" #:version ,version]))
|
["racket" #:version ,version]))
|
||||||
|
|
|
@ -160,7 +160,7 @@ is evaluated.
|
||||||
[level log-level/c]
|
[level log-level/c]
|
||||||
[topic (or/c symbol? #f) (logger-name logger)]
|
[topic (or/c symbol? #f) (logger-name logger)]
|
||||||
[message string?]
|
[message string?]
|
||||||
[data any/c]
|
[data any/c #f]
|
||||||
[prefix-message? any/c #t])
|
[prefix-message? any/c #t])
|
||||||
void?]{
|
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
|
@racket[#f], then @racket[message] is prefixed with the topic followed
|
||||||
by @racket[": "] before it is sent to receivers.
|
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?]
|
@defproc[(log-level? [logger logger?]
|
||||||
|
|
|
@ -319,6 +319,21 @@
|
||||||
exn:fail:contract?
|
exn:fail:contract?
|
||||||
#rx"define-logger: contract violation.+expected: \\(or/c logger\\? #f\\).+given: 'not-a-logger")
|
#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)
|
(report-errs)
|
||||||
|
|
|
@ -93,15 +93,26 @@
|
||||||
(define/who log-message
|
(define/who log-message
|
||||||
;; Complex dispatch based on number and whether third is a string:
|
;; Complex dispatch based on number and whether third is a string:
|
||||||
(case-lambda
|
(case-lambda
|
||||||
[(logger level message data)
|
[(logger level message)
|
||||||
(define topic (and (logger? logger) (logger-name logger)))
|
(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?)
|
[(logger level topic/message message/data data/prefix?)
|
||||||
(cond
|
(cond
|
||||||
[(string? topic/message)
|
[(string? topic/message)
|
||||||
(define topic (and (logger? logger) (logger-name logger)))
|
(define topic (and (logger? logger) (logger-name logger)))
|
||||||
(do-log-message who logger level topic topic/message message/data data/prefix?)]
|
(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)]
|
(do-log-message who logger level topic/message message/data data/prefix? #t)]
|
||||||
[else
|
[else
|
||||||
(check who logger? logger)
|
(check who logger? logger)
|
||||||
|
|
|
@ -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-logger", make_logger, 0, -1, env);
|
||||||
ADD_NONCM_PRIM("make-log-receiver", make_log_reader, 2, -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?", logger_p, 1, 1, 1, env);
|
||||||
ADD_FOLDING_PRIM("logger-name", logger_name, 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);
|
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_Logger *logger;
|
||||||
Scheme_Object *bytes;
|
Scheme_Object *bytes;
|
||||||
Scheme_Object *name;
|
Scheme_Object *name;
|
||||||
|
Scheme_Object *data;
|
||||||
int level, pos, pfx;
|
int level, pos, pfx;
|
||||||
|
|
||||||
if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_logger_type))
|
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]);
|
pfx = SCHEME_TRUEP(argv[pos+1]);
|
||||||
else
|
else
|
||||||
pfx = 1;
|
pfx = 1;
|
||||||
|
|
||||||
|
if (pos >= argc)
|
||||||
|
data = scheme_false;
|
||||||
|
else
|
||||||
|
data = argv[pos];
|
||||||
|
|
||||||
scheme_log_name_pfx_message(logger, level, name,
|
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);
|
pfx);
|
||||||
|
|
||||||
return scheme_void;
|
return scheme_void;
|
||||||
|
|
|
@ -13,12 +13,12 @@
|
||||||
consistently.)
|
consistently.)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MZSCHEME_VERSION "7.2.0.6"
|
#define MZSCHEME_VERSION "7.2.0.7"
|
||||||
|
|
||||||
#define MZSCHEME_VERSION_X 7
|
#define MZSCHEME_VERSION_X 7
|
||||||
#define MZSCHEME_VERSION_Y 2
|
#define MZSCHEME_VERSION_Y 2
|
||||||
#define MZSCHEME_VERSION_Z 0
|
#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_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
|
||||||
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user