Upgrade to Liquibase 3.6.1 and adapt to logging changes
Closes gh-13145
This commit is contained in:
@@ -116,7 +116,7 @@
|
||||
<kafka.version>1.1.0</kafka.version>
|
||||
<kotlin.version>1.2.41</kotlin.version>
|
||||
<lettuce.version>5.0.4.RELEASE</lettuce.version>
|
||||
<liquibase.version>3.5.5</liquibase.version>
|
||||
<liquibase.version>3.6.1</liquibase.version>
|
||||
<log4j2.version>2.10.0</log4j2.version>
|
||||
<logback.version>1.2.3</logback.version>
|
||||
<lombok.version>1.16.20</lombok.version>
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.liquibase;
|
||||
|
||||
import liquibase.logging.LogLevel;
|
||||
import liquibase.logging.Logger;
|
||||
import liquibase.logging.core.AbstractLogger;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
/**
|
||||
* Liquibase {@link Logger} that delegates to an Apache Commons {@link Log}.
|
||||
*
|
||||
* @author Michael Cramer
|
||||
* @author Phillip Webb
|
||||
* @author Andy Wilkinson
|
||||
* @since 1.2.0
|
||||
*/
|
||||
public class CommonsLoggingLiquibaseLogger extends AbstractLogger {
|
||||
|
||||
/**
|
||||
* The priority for the {@link CommonsLoggingLiquibaseLogger}.
|
||||
*/
|
||||
public static final int PRIORITY = 10;
|
||||
|
||||
private Log logger;
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
this.logger = createLogger(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method used to create the logger.
|
||||
* @param name the name of the logger
|
||||
* @return a {@link Log} instance
|
||||
*/
|
||||
protected Log createLogger(String name) {
|
||||
return LogFactory.getLog(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLogLevel(String logLevel, String logFile) {
|
||||
super.setLogLevel(logLevel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void severe(String message) {
|
||||
if (isEnabled(LogLevel.SEVERE)) {
|
||||
this.logger.error(buildMessage(message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void severe(String message, Throwable e) {
|
||||
if (isEnabled(LogLevel.SEVERE)) {
|
||||
this.logger.error(buildMessage(message), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warning(String message) {
|
||||
if (isEnabled(LogLevel.WARNING)) {
|
||||
this.logger.warn(buildMessage(message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warning(String message, Throwable e) {
|
||||
if (isEnabled(LogLevel.WARNING)) {
|
||||
this.logger.warn(buildMessage(message), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void info(String message) {
|
||||
if (isEnabled(LogLevel.INFO)) {
|
||||
this.logger.info(buildMessage(message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void info(String message, Throwable e) {
|
||||
if (isEnabled(LogLevel.INFO)) {
|
||||
this.logger.info(buildMessage(message), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String message) {
|
||||
if (isEnabled(LogLevel.DEBUG)) {
|
||||
this.logger.debug(buildMessage(message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String message, Throwable e) {
|
||||
if (isEnabled(LogLevel.DEBUG)) {
|
||||
this.logger.debug(buildMessage(message), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return PRIORITY;
|
||||
}
|
||||
|
||||
private boolean isEnabled(LogLevel level) {
|
||||
if (this.logger != null) {
|
||||
switch (level) {
|
||||
case DEBUG:
|
||||
return this.logger.isDebugEnabled();
|
||||
case INFO:
|
||||
return this.logger.isInfoEnabled();
|
||||
case WARNING:
|
||||
return this.logger.isWarnEnabled();
|
||||
case SEVERE:
|
||||
return this.logger.isErrorEnabled();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -54,10 +54,7 @@ public class LiquibaseServiceLocatorApplicationListener
|
||||
public void replaceServiceLocator() {
|
||||
CustomResolverServiceLocator customResolverServiceLocator = new CustomResolverServiceLocator(
|
||||
new SpringPackageScanClassResolver(logger));
|
||||
customResolverServiceLocator.addPackageToScan(
|
||||
CommonsLoggingLiquibaseLogger.class.getPackage().getName());
|
||||
ServiceLocator.setInstance(customResolverServiceLocator);
|
||||
liquibase.logging.LogFactory.reset();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.liquibase;
|
||||
|
||||
import liquibase.logging.LogLevel;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
/**
|
||||
* Tests for {@link CommonsLoggingLiquibaseLogger}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
public class CommonsLoggingLiquibaseLoggerTests {
|
||||
|
||||
private Log delegate = mock(Log.class);
|
||||
|
||||
private CommonsLoggingLiquibaseLogger logger;
|
||||
|
||||
private Throwable ex = new Exception();
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
this.logger = new MockCommonsLoggingLiquibaseLogger();
|
||||
this.logger.setName("mylog");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void debug() {
|
||||
this.logger.setLogLevel(LogLevel.DEBUG);
|
||||
given(this.delegate.isDebugEnabled()).willReturn(true);
|
||||
this.logger.debug("debug");
|
||||
verify(this.delegate).debug("debug");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void debugWithException() {
|
||||
this.logger.setLogLevel(LogLevel.DEBUG);
|
||||
given(this.delegate.isDebugEnabled()).willReturn(true);
|
||||
this.logger.debug("debug", this.ex);
|
||||
verify(this.delegate).debug("debug", this.ex);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void debugWithLoggerOff() {
|
||||
this.logger.setLogLevel(LogLevel.DEBUG);
|
||||
given(this.delegate.isDebugEnabled()).willReturn(false);
|
||||
this.logger.debug("debug");
|
||||
verify(this.delegate, never()).debug("debug");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void info() {
|
||||
this.logger.setLogLevel(LogLevel.INFO);
|
||||
given(this.delegate.isInfoEnabled()).willReturn(true);
|
||||
this.logger.info("info");
|
||||
verify(this.delegate).info("info");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void infoWithException() {
|
||||
this.logger.setLogLevel(LogLevel.INFO);
|
||||
given(this.delegate.isInfoEnabled()).willReturn(true);
|
||||
this.logger.info("info", this.ex);
|
||||
verify(this.delegate).info("info", this.ex);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void infoWithLoggerOff() {
|
||||
this.logger.setLogLevel(LogLevel.INFO);
|
||||
given(this.delegate.isInfoEnabled()).willReturn(false);
|
||||
this.logger.info("info");
|
||||
verify(this.delegate, never()).info("info");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void warning() {
|
||||
this.logger.setLogLevel(LogLevel.WARNING);
|
||||
given(this.delegate.isWarnEnabled()).willReturn(true);
|
||||
this.logger.warning("warning");
|
||||
verify(this.delegate).warn("warning");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void warningWithException() {
|
||||
this.logger.setLogLevel(LogLevel.WARNING);
|
||||
given(this.delegate.isWarnEnabled()).willReturn(true);
|
||||
this.logger.warning("warning", this.ex);
|
||||
verify(this.delegate).warn("warning", this.ex);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void warningWithLoggerOff() {
|
||||
this.logger.setLogLevel(LogLevel.WARNING);
|
||||
given(this.delegate.isWarnEnabled()).willReturn(false);
|
||||
this.logger.warning("warning");
|
||||
verify(this.delegate, never()).warn("warning");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void severe() {
|
||||
this.logger.setLogLevel(LogLevel.SEVERE);
|
||||
given(this.delegate.isErrorEnabled()).willReturn(true);
|
||||
this.logger.severe("severe");
|
||||
verify(this.delegate).error("severe");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void severeWithException() {
|
||||
this.logger.setLogLevel(LogLevel.SEVERE);
|
||||
given(this.delegate.isErrorEnabled()).willReturn(true);
|
||||
this.logger.severe("severe", this.ex);
|
||||
verify(this.delegate).error("severe", this.ex);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void severeWithLoggerOff() {
|
||||
this.logger.setLogLevel(LogLevel.SEVERE);
|
||||
given(this.delegate.isErrorEnabled()).willReturn(false);
|
||||
this.logger.severe("severe");
|
||||
verify(this.delegate, never()).error("severe");
|
||||
}
|
||||
|
||||
private class MockCommonsLoggingLiquibaseLogger
|
||||
extends CommonsLoggingLiquibaseLogger {
|
||||
|
||||
@Override
|
||||
protected Log createLogger(String name) {
|
||||
return CommonsLoggingLiquibaseLoggerTests.this.delegate;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user