Skip to content
Snippets Groups Projects
Unverified Commit ed1d503f authored by Ngoc Khuat's avatar Ngoc Khuat Committed by GitHub
Browse files

Suppress console log when using `with-log-messages-for-level` (#26468)

* disable additivity when using "with-log-level"

* only set when parent is root

* wording

* remove a test that is no longer needed

* fix indents

* one missing indent fix
parent d736678b
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,19 @@
;; it either increases (could have many logs from other tests) or it is the max capacity of the ring buffer
(is (or (> after before)
(= before (var-get #'mb.logger/max-log-entries)))
"In memory ring buffer did not receive log message"))))))
"In memory ring buffer did not receive log message")))))
(testing "set isAdditive = false if parent logger is root to prevent logging to console (#26468)"
(testing "make sure it's true to starts with"
(is (true? (.isAdditive (log.impl/get-logger log/*logger-factory* 'metabase)))))
(testing "set to false if parent logger is root"
(mt/with-log-level :warn
(is (false? (.isAdditive (log.impl/get-logger log/*logger-factory* 'metabase))))))
(testing "still true if the parent logger is not root"
(mt/with-log-level [metabase.logger :warn]
(is (true? (.isAdditive (log.impl/get-logger log/*logger-factory* 'metabase.logger))))))))
(deftest logger-test
(testing "Using log4j2 logger"
......
......@@ -112,11 +112,21 @@
(defn do-with-log-level [a-namespace level thunk]
(test-runner.parallel/assert-test-is-not-parallel "with-log-level")
(let [original-log-level (ns-log-level a-namespace)]
(ensure-unique-logger! a-namespace)
(let [original-log-level (ns-log-level a-namespace)
logger (exact-ns-logger a-namespace)
is-additive (.isAdditive logger)
parent-is-root? (= "" (-> logger .getParent .getName))]
(try
;; prevent events to be passed to the root logger's appenders which will log to the Console
;; https://logging.apache.org/log4j/2.x/manual/configuration.html#Additivity
(when parent-is-root?
(.setAdditive logger false))
(set-ns-log-level! a-namespace level)
(thunk)
(finally
(when parent-is-root?
(.setAdditive logger is-additive))
(set-ns-log-level! a-namespace original-log-level)))))
(defmacro with-log-level
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment