diff options
Diffstat (limited to 'std/log/mod_test.ts')
-rw-r--r-- | std/log/mod_test.ts | 133 |
1 files changed, 132 insertions, 1 deletions
diff --git a/std/log/mod_test.ts b/std/log/mod_test.ts index 9de5d76af..30c6b0914 100644 --- a/std/log/mod_test.ts +++ b/std/log/mod_test.ts @@ -8,8 +8,10 @@ import { error, critical, setup, + Logger, + LogLevels, + LevelName, } from "./mod.ts"; -import { Logger } from "./logger.ts"; import { BaseHandler } from "./handlers.ts"; class TestHandler extends BaseHandler { @@ -89,3 +91,132 @@ Deno.test({ assertEquals(anotherConsoleHandler.messages[0], "[tasks] ERROR world"); }, }); + +Deno.test({ + name: "Loggers have level and levelName to get/set loglevels", + async fn() { + const testHandler = new TestHandler("DEBUG"); + await setup({ + handlers: { + test: testHandler, + }, + + loggers: { + // configure default logger available via short-hand methods above + default: { + level: "DEBUG", + handlers: ["test"], + }, + }, + }); + const logger: Logger = getLogger(); + assertEquals(logger.levelName, "DEBUG"); + assertEquals(logger.level, LogLevels.DEBUG); + + logger.debug("debug"); + logger.error("error"); + logger.critical("critical"); + assertEquals(testHandler.messages.length, 3); + assertEquals(testHandler.messages[0], "DEBUG debug"); + assertEquals(testHandler.messages[1], "ERROR error"); + assertEquals(testHandler.messages[2], "CRITICAL critical"); + + testHandler.messages = []; + logger.level = LogLevels.WARNING; + assertEquals(logger.levelName, "WARNING"); + assertEquals(logger.level, LogLevels.WARNING); + + logger.debug("debug2"); + logger.error("error2"); + logger.critical("critical2"); + assertEquals(testHandler.messages.length, 2); + assertEquals(testHandler.messages[0], "ERROR error2"); + assertEquals(testHandler.messages[1], "CRITICAL critical2"); + + testHandler.messages = []; + const setLevelName: LevelName = "CRITICAL"; + logger.levelName = setLevelName; + assertEquals(logger.levelName, "CRITICAL"); + assertEquals(logger.level, LogLevels.CRITICAL); + + logger.debug("debug3"); + logger.error("error3"); + logger.critical("critical3"); + assertEquals(testHandler.messages.length, 1); + assertEquals(testHandler.messages[0], "CRITICAL critical3"); + }, +}); + +Deno.test({ + name: "Loggers have loggerName to get logger name", + async fn() { + const testHandler = new TestHandler("DEBUG"); + await setup({ + handlers: { + test: testHandler, + }, + + loggers: { + namedA: { + level: "DEBUG", + handlers: ["test"], + }, + namedB: { + level: "DEBUG", + handlers: ["test"], + }, + }, + }); + + assertEquals(getLogger("namedA").loggerName, "namedA"); + assertEquals(getLogger("namedB").loggerName, "namedB"); + assertEquals(getLogger().loggerName, "default"); + assertEquals(getLogger("nonsetupname").loggerName, "nonsetupname"); + }, +}); + +Deno.test({ + name: "Logger has mutable handlers", + async fn() { + const testHandlerA = new TestHandler("DEBUG"); + const testHandlerB = new TestHandler("DEBUG"); + await setup({ + handlers: { + testA: testHandlerA, + testB: testHandlerB, + }, + + loggers: { + default: { + level: "DEBUG", + handlers: ["testA"], + }, + }, + }); + const logger: Logger = getLogger(); + logger.info("msg1"); + assertEquals(testHandlerA.messages.length, 1); + assertEquals(testHandlerA.messages[0], "INFO msg1"); + assertEquals(testHandlerB.messages.length, 0); + + logger.handlers = [testHandlerA, testHandlerB]; + + logger.info("msg2"); + assertEquals(testHandlerA.messages.length, 2); + assertEquals(testHandlerA.messages[1], "INFO msg2"); + assertEquals(testHandlerB.messages.length, 1); + assertEquals(testHandlerB.messages[0], "INFO msg2"); + + logger.handlers = [testHandlerB]; + + logger.info("msg3"); + assertEquals(testHandlerA.messages.length, 2); + assertEquals(testHandlerB.messages.length, 2); + assertEquals(testHandlerB.messages[1], "INFO msg3"); + + logger.handlers = []; + logger.info("msg4"); + assertEquals(testHandlerA.messages.length, 2); + assertEquals(testHandlerB.messages.length, 2); + }, +}); |