You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2020/12/11 08:51:30 UTC
[mina-sshd] 05/15: [SSHD-1109] Replace log4j with logback as the
slf4j logger implementation for tests
This is an automated email from the ASF dual-hosted git repository.
lgoldstein pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit a22514bb5a2692c7b510fbef3fdcdc86995d620d
Author: Lyor Goldstein <lg...@apache.org>
AuthorDate: Thu Dec 10 12:09:41 2020 +0200
[SSHD-1109] Replace log4j with logback as the slf4j logger implementation for tests
---
CHANGES.md | 1 +
pom.xml | 74 ++++++++++------------
sshd-cli/src/test/resources/.gitignore | 1 +
sshd-cli/src/test/resources/log4j.properties | 38 -----------
sshd-common/pom.xml | 2 +
.../sshd/common/util/logging/LoggingUtils.java | 13 ++++
.../apache/sshd/util/test/JUnitTestSupport.java | 43 +++++++++++++
sshd-common/src/test/resources/log4j.properties | 38 -----------
sshd-common/src/test/resources/logback-test.xml | 47 ++++++++++++++
sshd-contrib/src/test/resources/log4j.properties | 38 -----------
.../org/apache/sshd/util/test/BaseTestSupport.java | 11 ----
sshd-core/src/test/resources/log4j.properties | 38 -----------
sshd-git/src/test/resources/log4j.properties | 38 -----------
sshd-ldap/src/test/resources/log4j.properties | 38 -----------
sshd-mina/src/test/resources/.gitignore | 1 +
sshd-netty/src/test/resources/.gitignore | 1 +
sshd-openpgp/src/test/resources/log4j.properties | 38 -----------
sshd-putty/src/test/resources/log4j.properties | 38 -----------
sshd-scp/src/main/resources/.gitignore | 1 +
sshd-scp/src/test/resources/.gitignore | 1 +
sshd-scp/src/test/resources/log4j.properties | 38 -----------
sshd-sftp/src/test/resources/.gitignore | 1 +
sshd-sftp/src/test/resources/log4j.properties | 39 ------------
sshd-spring-sftp/src/main/resources/.gitignore | 1 +
sshd-spring-sftp/src/test/resources/.gitignore | 1 +
25 files changed, 149 insertions(+), 431 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 10cf108..0da7379 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -23,3 +23,4 @@
## Behavioral changes and enhancements
* [SSHD-1085](https://issues.apache.org/jira/browse/SSHD-1085) Added more notifications related to channel state change for detecting channel closing or closed earlier.
+* [SSHD-1109](https://issues.apache.org/jira/browse/SSHD-1109) Replace log4j with logback as the slf4j logger implementation for tests
diff --git a/pom.xml b/pom.xml
index c3fb369..e5e6ecc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,7 @@
<groovy.version>3.0.6</groovy.version>
<bouncycastle.version>1.67</bouncycastle.version>
<slf4j.version>1.7.30</slf4j.version>
+ <logback.version>1.2.3</logback.version>
<spring.version> 5.3.1</spring.version>
<jgit.version>5.9.0.202009080501-r</jgit.version>
<junit.version>4.13.1</junit.version>
@@ -449,11 +450,6 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>${slf4j.version}</version>
</dependency>
@@ -462,6 +458,19 @@
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
@@ -511,37 +520,6 @@
</dependency>
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- <exclusions>
- <exclusion>
- <groupId>javax.jms</groupId>
- <artifactId>jms</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.sun.jmx</groupId>
- <artifactId>jmxri</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.sun.jdmk</groupId>
- <artifactId>jmxtools</artifactId>
- </exclusion>
- <exclusion>
- <groupId>ant</groupId>
- <artifactId>ant-nodeps</artifactId>
- </exclusion>
- <exclusion>
- <groupId>ant</groupId>
- <artifactId>ant-junit</artifactId>
- </exclusion>
- <exclusion>
- <groupId>ant-contrib</groupId>
- <artifactId>ant-contrib</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
@@ -627,6 +605,18 @@
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.pgm</artifactId>
<version>${jgit.version}</version>
+ <!-- We provide our own slf4j logging - needed for tests only -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -656,8 +646,13 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
<dependency>
@@ -1331,7 +1326,7 @@
<resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
</resourceBundles>
<supplementalModels>
- <supplementalModel>${workspace.root.dir}/assembly/src/main/legal/notices.xml</supplementalModel>
+ <supplementalModel>${workspace.root.dir}${file.separator}assembly${file.separator}src${file.separator}main${file.separator}legal${file.separator}notices.xml</supplementalModel>
</supplementalModels>
<properties>
<projectName>Apache MINA SSHD</projectName>
@@ -1464,6 +1459,7 @@
<java.awt.headless>true</java.awt.headless>
<org.slf4j.simpleLogger.logFile>System.out</org.slf4j.simpleLogger.logFile>
<org.apache.sshd.test.timeout.factor>${sshd.tests.timeout.factor}</org.apache.sshd.test.timeout.factor>
+ <logback.configurationFile>${workspace.root.folder}${file.separator}sshd-common${file.separator}src${file.separator}test${file.separator}resources${file.separator}logback-test.xml</logback.configurationFile>
</systemPropertyVariables>
<trimStackTrace>false</trimStackTrace>
<!-- lets re-run the failed test one more time, just to be sure -->
diff --git a/sshd-cli/src/test/resources/.gitignore b/sshd-cli/src/test/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-cli/src/test/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file
diff --git a/sshd-cli/src/test/resources/log4j.properties b/sshd-cli/src/test/resources/log4j.properties
deleted file mode 100644
index 51c6fee..0000000
--- a/sshd-cli/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-log4j.appender.logfile.file=target/sshd-cli-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-common/pom.xml b/sshd-common/pom.xml
index a1a110b..6c8cd8c 100644
--- a/sshd-common/pom.xml
+++ b/sshd-common/pom.xml
@@ -97,6 +97,8 @@
<configuration>
<includes>
<include>org/apache/sshd/util/test/**/*</include>
+ <!-- Use the same configuration for all tests logging -->
+ <include>logback-test.xml</include>
</includes>
</configuration>
</execution>
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/util/logging/LoggingUtils.java b/sshd-common/src/main/java/org/apache/sshd/common/util/logging/LoggingUtils.java
index 263924b..13acb4d 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/util/logging/LoggingUtils.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/util/logging/LoggingUtils.java
@@ -25,10 +25,12 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.NavigableMap;
import java.util.Objects;
+import java.util.Set;
import java.util.TreeMap;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -45,11 +47,22 @@ import org.slf4j.helpers.MessageFormatter;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public final class LoggingUtils {
+ public static final Set<org.slf4j.event.Level> SLF4J_LEVELS
+ = Collections.unmodifiableSet(EnumSet.allOf(org.slf4j.event.Level.class));
private LoggingUtils() {
throw new UnsupportedOperationException("No instance");
}
+ public static org.slf4j.event.Level slf4jLevelFromName(String name) {
+ return GenericUtils.isEmpty(name)
+ ? null
+ : SLF4J_LEVELS.stream()
+ .filter(l -> name.equalsIgnoreCase(l.name()))
+ .findAny()
+ .orElse(null);
+ }
+
/**
* Scans using reflection API for all fields that are {@code public static final} that start with the given common
* prefix (case <U>sensitive</U>) and are of type {@link Number}.
diff --git a/sshd-common/src/test/java/org/apache/sshd/util/test/JUnitTestSupport.java b/sshd-common/src/test/java/org/apache/sshd/util/test/JUnitTestSupport.java
index a5211f0..98d870f 100644
--- a/sshd-common/src/test/java/org/apache/sshd/util/test/JUnitTestSupport.java
+++ b/sshd-common/src/test/java/org/apache/sshd/util/test/JUnitTestSupport.java
@@ -58,10 +58,14 @@ import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.keyprovider.KeyPairProvider;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.io.IoUtils;
+import org.apache.sshd.common.util.logging.LoggingUtils;
import org.junit.Assert;
+import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.rules.TestName;
import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
/**
@@ -78,6 +82,8 @@ public abstract class JUnitTestSupport extends Assert {
public static final String TEST_SUBFOLDER = "test";
public static final String RESOURCES_SUBFOLDER = "resources";
+ public static final org.slf4j.event.Level DEFAULT_LOGGING_LEVEL = org.slf4j.event.Level.INFO;
+
// useful test sizes for keys
public static final List<Integer> DSS_SIZES = Collections.unmodifiableList(Arrays.asList(512, 768, 1024));
public static final List<Integer> RSA_SIZES = Collections.unmodifiableList(Arrays.asList(1024, 2048, 3072, 4096));
@@ -93,6 +99,43 @@ public abstract class JUnitTestSupport extends Assert {
replaceJULLoggers();
}
+ @BeforeClass
+ public static void setupRootLoggerLevel() {
+ String levelName = System.getProperty(
+ "org.apache.sshd.test.root.log.level", DEFAULT_LOGGING_LEVEL.toString());
+ org.slf4j.event.Level level = LoggingUtils.slf4jLevelFromName(levelName);
+ if (level == null) {
+ level = DEFAULT_LOGGING_LEVEL;
+ }
+
+ replaceJULLoggers();
+
+ Logger rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+ if (rootLogger instanceof ch.qos.logback.classic.Logger) {
+ Class<?> clazz = rootLogger.getClass();
+ ch.qos.logback.classic.Level rawLevel = getRawLoggerLevel(level);
+ ((ch.qos.logback.classic.Logger) rootLogger).setLevel(rawLevel);
+ rootLogger.info("Using {} logger(s) at level={}", clazz.getName(), rawLevel);
+ }
+ }
+
+ public static ch.qos.logback.classic.Level getRawLoggerLevel(org.slf4j.event.Level level) {
+ if (org.slf4j.event.Level.ERROR.equals(level)) {
+ return ch.qos.logback.classic.Level.ERROR;
+ } else if (org.slf4j.event.Level.WARN.equals(level)) {
+ return ch.qos.logback.classic.Level.WARN;
+ } else if (org.slf4j.event.Level.INFO.equals(level)) {
+ return ch.qos.logback.classic.Level.INFO;
+ } else if (org.slf4j.event.Level.DEBUG.equals(level)) {
+ return ch.qos.logback.classic.Level.DEBUG;
+ } else if (org.slf4j.event.Level.TRACE.equals(level)) {
+ return ch.qos.logback.classic.Level.TRACE;
+ } else {
+ return ch.qos.logback.classic.Level.INFO;
+ }
+
+ }
+
public final String getCurrentTestName() {
return testNameHolder.getMethodName();
}
diff --git a/sshd-common/src/test/resources/log4j.properties b/sshd-common/src/test/resources/log4j.properties
deleted file mode 100644
index cf1d08a..0000000
--- a/sshd-common/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-log4j.appender.logfile.file=target/sshd-common-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-common/src/test/resources/logback-test.xml b/sshd-common/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..f6e91d8
--- /dev/null
+++ b/sshd-common/src/test/resources/logback-test.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+
+<!DOCTYPE configuration>
+<configuration debug="true">
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <!--
+ TODO see if can use a LoggerStartupListener
+ as described in https://stackoverflow.com/questions/1975939/read-environment-variables-from-logback-configuration-file
+ -->
+ <file>target/sshd-tests.log</file>
+ <append>true</append>
+ <!-- set immediateFlush to false for much higher logging throughput -->
+ <immediateFlush>false</immediateFlush>
+ <encoder>
+ <pattern>%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n</pattern>
+ </encoder>
+ </appender>
+
+ <!-- root level can be changed via -Dorg.apache.sshd.test.root.log.level=XXX -->
+ <root level="INFO">
+ <appender-ref ref="STDOUT" />
+ <appender-ref ref="FILE" />
+ </root>
+</configuration>
\ No newline at end of file
diff --git a/sshd-contrib/src/test/resources/log4j.properties b/sshd-contrib/src/test/resources/log4j.properties
deleted file mode 100644
index 18ea57c..0000000
--- a/sshd-contrib/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-log4j.appender.logfile.file=target/sshd-contrib-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java b/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java
index 068a2d8..01c2a9b 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java
@@ -32,7 +32,6 @@ import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.net.SshdSocketAddress;
import org.apache.sshd.server.SshServer;
import org.junit.Assume;
-import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
@@ -90,16 +89,6 @@ public abstract class BaseTestSupport extends JUnitTestSupport {
super();
}
- @BeforeClass
- public static void setupRootLoggerLevel() {
- String levelName = System.getProperty(
- "org.apache.sshd.test.root.log.level", org.apache.log4j.Level.INFO.toString());
- org.apache.log4j.Level level = org.apache.log4j.Level.toLevel(
- levelName.toUpperCase(), org.apache.log4j.Level.INFO);
- org.apache.log4j.Logger logger = org.apache.log4j.Logger.getRootLogger();
- logger.setLevel(level);
- }
-
protected SshServer setupTestServer() {
return CoreTestSupportUtils.setupTestServer(getClass());
}
diff --git a/sshd-core/src/test/resources/log4j.properties b/sshd-core/src/test/resources/log4j.properties
deleted file mode 100644
index 4e4dd65..0000000
--- a/sshd-core/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-log4j.appender.logfile.file=target/sshd-core-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-git/src/test/resources/log4j.properties b/sshd-git/src/test/resources/log4j.properties
deleted file mode 100644
index 87b7908..0000000
--- a/sshd-git/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-log4j.appender.logfile.file=target/sshd-git-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-ldap/src/test/resources/log4j.properties b/sshd-ldap/src/test/resources/log4j.properties
deleted file mode 100644
index 590c257..0000000
--- a/sshd-ldap/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-log4j.appender.logfile.file=target/sshd-ldap-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-mina/src/test/resources/.gitignore b/sshd-mina/src/test/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-mina/src/test/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file
diff --git a/sshd-netty/src/test/resources/.gitignore b/sshd-netty/src/test/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-netty/src/test/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file
diff --git a/sshd-openpgp/src/test/resources/log4j.properties b/sshd-openpgp/src/test/resources/log4j.properties
deleted file mode 100644
index e3f24df..0000000
--- a/sshd-openpgp/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-log4j.appender.logfile.file=target/sshd-pgp-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-putty/src/test/resources/log4j.properties b/sshd-putty/src/test/resources/log4j.properties
deleted file mode 100644
index 351467b..0000000
--- a/sshd-putty/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-log4j.appender.logfile.file=target/sshd-putty-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-scp/src/main/resources/.gitignore b/sshd-scp/src/main/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-scp/src/main/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file
diff --git a/sshd-scp/src/test/resources/.gitignore b/sshd-scp/src/test/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-scp/src/test/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file
diff --git a/sshd-scp/src/test/resources/log4j.properties b/sshd-scp/src/test/resources/log4j.properties
deleted file mode 100644
index 0159bbd..0000000
--- a/sshd-scp/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-log4j.appender.logfile.file=target/sshd-scp-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-sftp/src/test/resources/.gitignore b/sshd-sftp/src/test/resources/.gitignore
new file mode 100644
index 0000000..31e6820
--- /dev/null
+++ b/sshd-sftp/src/test/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
diff --git a/sshd-sftp/src/test/resources/log4j.properties b/sshd-sftp/src/test/resources/log4j.properties
deleted file mode 100644
index 6643321..0000000
--- a/sshd-sftp/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-#
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, stdout, logfile
-log4j.logger.io.netty.handler.logging=ERROR
-#log4j.logger.org.apache.sshd=TRACE
-#log4j.logger.org.apache.sshd.common.channel.Window=DEBUG
-
-# CONSOLE appender
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-
-# File appender
-log4j.appender.logfile=org.apache.log4j.FileAppender
-log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%d | %-5.5p | %-16.16t | %-32.32c{1} | %-64.64C %4L | %m%n
-log4j.appender.logfile.file=target/sshd-sftp-tests.log
-log4j.appender.logfile.append=true
diff --git a/sshd-spring-sftp/src/main/resources/.gitignore b/sshd-spring-sftp/src/main/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-spring-sftp/src/main/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file
diff --git a/sshd-spring-sftp/src/test/resources/.gitignore b/sshd-spring-sftp/src/test/resources/.gitignore
new file mode 100644
index 0000000..99e3531
--- /dev/null
+++ b/sshd-spring-sftp/src/test/resources/.gitignore
@@ -0,0 +1 @@
+# Placeholder for empty folder
\ No newline at end of file