blob: 42cb7b5755aa33e8a30933ac1eedd2ea3824db9f [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.unit.util.log;
import static org.junit.jupiter.api.Assertions.*;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.FileAppender;
import java.io.*;
import java.sql.SQLException;
import org.junit.jupiter.api.Test;
import org.mariadb.jdbc.util.log.Logger;
import org.mariadb.jdbc.util.log.Loggers;
import org.slf4j.LoggerFactory;
public class LoggersTest {
@Test
public void Slf4JLogger() throws IOException {
ch.qos.logback.classic.Logger root =
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger(this.getClass());
root.setLevel(Level.TRACE);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder ple = new PatternLayoutEncoder();
ple.setPattern("%level %logger{10} [%file] %msg%n");
ple.setContext(lc);
ple.start();
File tempfile = File.createTempFile("debug-", ".log");
FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
fileAppender.setFile(tempfile.getCanonicalPath());
fileAppender.setEncoder(ple);
fileAppender.setContext(lc);
fileAppender.start();
root.addAppender(fileAppender);
Logger logger = Loggers.getLogger(LoggersTest.class);
assertTrue(logger.isErrorEnabled());
assertTrue(logger.isWarnEnabled());
assertTrue(logger.isInfoEnabled());
assertTrue(logger.isDebugEnabled());
assertTrue(logger.isTraceEnabled());
assertEquals("org.mariadb.jdbc.unit.util.log.LoggersTest", logger.getName());
Logger logger2 = Loggers.getLogger("bla");
assertEquals("bla", logger2.getName());
logger.error("Test err1");
logger.error("Test err2", new SQLException("test exception"));
logger.error("Test err3 {}", "param");
logger.warn("Test warn 1");
logger.warn("Test warn 2", new SQLException("test exception"));
logger.warn("Test warn 3 {}", "param");
logger.info("Test info 1");
logger.info("Test info 2", new SQLException("test exception"));
logger.info("Test info 3 {}", "param");
logger.debug("Test debug 1");
logger.debug("Test debug 2", new SQLException("test exception"));
logger.debug("Test debug 3 {}", "param");
logger.trace("Test trace 1");
logger.trace("Test trace 2", new SQLException("test exception"));
logger.trace("Test trace 3 {}", "param");
BufferedReader reader = new BufferedReader(new FileReader(tempfile.getCanonicalPath()));
assertEquals("ERROR o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test err1", reader.readLine());
assertEquals("ERROR o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test err2", reader.readLine());
assertEquals("java.sql.SQLException: test exception", reader.readLine());
String line;
do {
line = reader.readLine();
} while (line != null && line.startsWith("\tat "));
assertEquals("ERROR o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test err3 param", line);
assertEquals("WARN o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test warn 1", reader.readLine());
assertEquals("WARN o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test warn 2", reader.readLine());
assertEquals("java.sql.SQLException: test exception", reader.readLine());
do {
line = reader.readLine();
} while (line != null && line.startsWith("\tat "));
assertEquals("WARN o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test warn 3 param", line);
assertEquals("INFO o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test info 1", reader.readLine());
assertEquals("INFO o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test info 2", reader.readLine());
assertEquals("java.sql.SQLException: test exception", reader.readLine());
do {
line = reader.readLine();
} while (line != null && line.startsWith("\tat "));
assertEquals("INFO o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test info 3 param", line);
assertEquals(
"DEBUG o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test debug 1", reader.readLine());
assertEquals(
"DEBUG o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test debug 2", reader.readLine());
assertEquals("java.sql.SQLException: test exception", reader.readLine());
do {
line = reader.readLine();
} while (line != null && line.startsWith("\tat "));
assertEquals("DEBUG o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test debug 3 param", line);
assertEquals(
"TRACE o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test trace 1", reader.readLine());
assertEquals(
"TRACE o.m.j.u.u.l.LoggersTest [Slf4JLogger.java] Test trace 2", reader.readLine());
assertEquals("java.sql.SQLException: test exception", reader.readLine());
reader.close();
}
}