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/04/16 07:14:14 UTC
[mina-sshd] 02/02: [SSHD-977] Use consistent logging policy of
caught exceptions details
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 c39dd0d890dfe241681941aeceff7025b6c64ea2
Author: Lyor Goldstein <lg...@apache.org>
AuthorDate: Sun Apr 12 21:11:50 2020 +0300
[SSHD-977] Use consistent logging policy of caught exceptions details
---
CHANGES.md | 4 +-
.../agent/common/DefaultAgentForwardSupport.java | 8 +-
.../apache/sshd/agent/local/AgentServerProxy.java | 2 +-
.../java/org/apache/sshd/client/SshClient.java | 8 +-
.../apache/sshd/client/channel/ChannelSession.java | 25 ++---
.../client/session/ClientConnectionService.java | 8 +-
.../sshd/common/channel/AbstractChannel.java | 27 ++---
.../common/channel/BufferedIoOutputStream.java | 50 ++++-----
.../common/channel/ChannelAsyncOutputStream.java | 5 +-
.../sshd/common/channel/ChannelOutputStream.java | 12 +--
.../common/forward/DefaultForwardingFilter.java | 12 +--
.../apache/sshd/common/io/nio2/Nio2Service.java | 10 +-
.../apache/sshd/common/io/nio2/Nio2Session.java | 50 ++++-----
.../session/helpers/AbstractConnectionService.java | 15 ++-
.../common/session/helpers/AbstractSession.java | 20 ++--
.../session/helpers/AbstractSessionIoHandler.java | 9 +-
.../sshd/common/session/helpers/SessionHelper.java | 113 +++++++++------------
.../session/helpers/SessionTimeoutListener.java | 4 +
.../sshd/server/session/AbstractServerSession.java | 10 +-
.../sshd/server/session/ServerUserAuthService.java | 29 +++---
.../sshd/server/x11/DefaultX11ForwardSupport.java | 36 ++++---
.../apache/sshd/common/io/mina/MinaAcceptor.java | 4 +-
.../apache/sshd/common/io/mina/MinaConnector.java | 4 +-
.../subsystem/sftp/SftpDirEntryIterator.java | 4 +-
.../subsystem/sftp/fs/SftpFileSystemProvider.java | 5 +-
.../subsystem/sftp/impl/SimpleSftpClientImpl.java | 32 +++---
.../sftp/AbstractSftpSubsystemHelper.java | 23 ++---
.../sshd/server/subsystem/sftp/SftpSubsystem.java | 8 +-
28 files changed, 252 insertions(+), 285 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index f978527..7c0747d 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -29,4 +29,6 @@ where the former validate the messages and deal with the idle timeout, and the l
* [SSHD-970](https://issues.apache.org/jira/browse/SSHD-970) - `transferTo` function of `SftpRemotePathChannel` will loop if count parameter is greater than file size
-* [SSHD-972](https://issues.apache.org/jira/browse/SSHD-972) - Add support for peers using OpenSSH "security key" key types
\ No newline at end of file
+* [SSHD-972](https://issues.apache.org/jira/browse/SSHD-972) - Add support for peers using OpenSSH "security key" key types
+
+* [SSHD-977](https://issues.apache.org/jira/browse/SSHD-977) - Apply consistent logging policy to caught exceptions
\ No newline at end of file
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/DefaultAgentForwardSupport.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/DefaultAgentForwardSupport.java
index 9af4a84..38b3fd2 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/common/DefaultAgentForwardSupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/DefaultAgentForwardSupport.java
@@ -65,12 +65,10 @@ public class DefaultAgentForwardSupport extends AbstractCloseable implements Age
return agentId;
} catch (Throwable t) {
+ log.error("initialize({}) failed ({}) to create server: {}",
+ session, t.getClass().getSimpleName(), t.getMessage());
if (log.isDebugEnabled()) {
- log.debug("initialize({}) failed ({}) to create server: {}",
- session, t.getClass().getSimpleName(), t.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("initialize(" + session + ") server creation failure details", t);
+ log.error("initialize(" + session + ") server creation failure details", t);
}
if (t instanceof IOException) {
throw (IOException) t;
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
index 24a34cd..8a9c0af 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
@@ -52,7 +52,7 @@ public class AgentServerProxy extends AbstractLoggingBean implements SshAgentSer
return channel.getAgent();
} catch (Throwable t) {
if (log.isDebugEnabled()) {
- log.debug("createClient(" + service.getSession() + ")[" + getId() + ")"
+ log.warn("createClient(" + service.getSession() + ")[" + getId() + ")"
+ " failed (" + t.getClass().getSimpleName() + ")"
+ " to create client: " + t.getMessage());
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
index 477d7c7..fee16ad 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
@@ -442,12 +442,10 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
"Failed to receive closure confirmation within " + maxWait + " millis");
}
} catch (IOException e) {
- if (log.isDebugEnabled()) {
- log.debug(e.getClass().getSimpleName() + " while stopping client: " + e.getMessage());
- }
+ log.warn(e.getClass().getSimpleName() + " while stopping client: " + e.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("Stop exception details", e);
+ if (log.isDebugEnabled()) {
+ log.warn("Stop exception details", e);
}
} finally {
// clear the attributes since we close stop the client
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
index 6612079..2a162c5 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
@@ -156,13 +156,11 @@ public class ChannelSession extends AbstractClientChannel {
pumperService.shutdownNow();
} catch (Exception e) {
- // we log it as DEBUG since it is relatively harmless
+ // we log it as WARN since it is relatively harmless
+ log.warn("doCloseImmediately({}) failed {} to shutdown stream pumper: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("doCloseImmediately({}) failed {} to shutdown stream pumper: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("doCloseImmediately(" + this + ") stream pumper shutdown error details", e);
+ log.warn("doCloseImmediately(" + this + ") stream pumper shutdown error details", e);
}
} finally {
pumper = null;
@@ -172,6 +170,7 @@ public class ChannelSession extends AbstractClientChannel {
}
protected void pumpInputStream() {
+ boolean debugEnabled = log.isDebugEnabled();
try {
Session session = getSession();
Window wRemote = getRemoteWindow();
@@ -186,7 +185,7 @@ public class ChannelSession extends AbstractClientChannel {
while (!closeFuture.isClosed()) {
int len = securedRead(in, maxChunkSize, buffer, 0, buffer.length);
if (len < 0) {
- if (log.isDebugEnabled()) {
+ if (debugEnabled) {
log.debug("pumpInputStream({}) EOF signalled", this);
}
sendEof();
@@ -200,17 +199,15 @@ public class ChannelSession extends AbstractClientChannel {
}
}
- if (log.isDebugEnabled()) {
+ if (debugEnabled) {
log.debug("pumpInputStream({}) close future closed", this);
}
} catch (Exception e) {
if (!isClosing()) {
- if (log.isDebugEnabled()) {
- log.debug("pumpInputStream({}) Caught {} : {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("pumpInputStream(" + this + ") caught exception details", e);
+ log.error("pumpInputStream({}) Caught {} : {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
+ if (debugEnabled) {
+ log.error("pumpInputStream(" + this + ") caught exception details", e);
}
close(false);
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
index 8911cc5..a727cb2 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
@@ -142,12 +142,10 @@ public class ClientConnectionService
return true;
} catch (IOException | RuntimeException | Error e) {
session.exceptionCaught(e);
+ log.warn("sendHeartBeat({}) failed ({}) to send heartbeat #{} request={}: {}",
+ session, e.getClass().getSimpleName(), heartbeatCount, heartbeatRequest, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("sendHeartBeat({}) failed ({}) to send heartbeat #{} request={}: {}",
- session, e.getClass().getSimpleName(), heartbeatCount, heartbeatRequest, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("sendHeartBeat(" + session + ") exception details", e);
+ log.warn("sendHeartBeat(" + session + ") exception details", e);
}
return false;
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
index 4a393b0..27bff8a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
@@ -276,7 +276,7 @@ public abstract class AbstractChannel
this, e.getClass().getSimpleName(), handler.getClass().getSimpleName(),
req, wantReply, e.getMessage());
if (debugEnabled) {
- log.debug("handleRequest(" + this + ") request=" + req
+ log.warn("handleRequest(" + this + ") request=" + req
+ "[want-reply=" + wantReply + "] processing failure details",
e);
}
@@ -444,14 +444,12 @@ public abstract class AbstractChannel
log.warn("signalChannelOpenFailure({}) failed ({}) to inform listener of open failure={}: {}",
this, ignored.getClass().getSimpleName(), reason.getClass().getSimpleName(), ignored.getMessage());
if (log.isDebugEnabled()) {
- log.debug("doInit(" + this + ") inform listener open failure details", ignored);
- }
+ log.warn("doInit(" + this + ") inform listener open failure details", ignored);
- if (log.isTraceEnabled()) {
Throwable[] suppressed = ignored.getSuppressed();
if (GenericUtils.length(suppressed) > 0) {
for (Throwable s : suppressed) {
- log.trace("signalChannelOpenFailure(" + this + ") suppressed channel open failure signalling", s);
+ log.warn("signalChannelOpenFailure(" + this + ") suppressed channel open failure signalling", s);
}
}
}
@@ -477,7 +475,7 @@ public abstract class AbstractChannel
log.warn("notifyStateChanged({})[{}] {} while signal channel state change: {}",
this, hint, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("notifyStateChanged(" + this + ")[" + hint + "] channel state signalling failure details", e);
+ log.warn("notifyStateChanged(" + this + ")[" + hint + "] channel state signalling failure details", e);
}
} finally {
synchronized (futureLock) {
@@ -633,13 +631,11 @@ public abstract class AbstractChannel
}
});
} catch (IOException e) {
- if (debugEnabled) {
- log.debug("close({})[immediately={}] {} while writing SSH_MSG_CHANNEL_CLOSE packet on channel: {}",
- channel, immediately, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("close({})[immediately={}] {} while writing SSH_MSG_CHANNEL_CLOSE packet on channel: {}",
+ channel, immediately, e.getClass().getSimpleName(), e.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("close(" + channel + ")[immediately=" + immediately + "] packet write failure details", e);
+ if (log.isDebugEnabled()) {
+ log.warn("close(" + channel + ")[immediately=" + immediately + "] packet write failure details", e);
}
channel.close(true);
}
@@ -730,13 +726,12 @@ public abstract class AbstractChannel
Throwable e = GenericUtils.peelException(err);
log.warn("signalChannelClosed({}) {} while signal channel closed: {}", this, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("signalChannelClosed(" + this + ") channel closed signalling failure details", e);
- }
- if (log.isTraceEnabled()) {
+ log.warn("signalChannelClosed(" + this + ") channel closed signalling failure details", e);
+
Throwable[] suppressed = e.getSuppressed();
if (GenericUtils.length(suppressed) > 0) {
for (Throwable s : suppressed) {
- log.trace("signalChannelClosed(" + this + ") suppressed closed channel signalling failure", s);
+ log.warn("signalChannelClosed(" + this + ") suppressed closed channel signalling failure", s);
}
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
index 1cb75aa..d39c1f5 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
@@ -52,7 +52,7 @@ public class BufferedIoOutputStream extends AbstractInnerCloseable implements Io
@Override
public IoWriteFuture writePacket(Buffer buffer) throws IOException {
if (isClosing()) {
- throw new EOFException("Closed");
+ throw new EOFException("Closed - state=" + state);
}
IoWriteFutureImpl future = new IoWriteFutureImpl(getId(), buffer);
@@ -71,36 +71,40 @@ public class BufferedIoOutputStream extends AbstractInnerCloseable implements Io
return;
}
- out.writePacket(future.getBuffer()).addListener(new SshFutureListener<IoWriteFuture>() {
- @Override
- public void operationComplete(IoWriteFuture f) {
- if (f.isWritten()) {
- future.setValue(Boolean.TRUE);
- } else {
- future.setValue(f.getException());
+ out.writePacket(future.getBuffer()).addListener(
+ new SshFutureListener<IoWriteFuture>() {
+ @Override
+ public void operationComplete(IoWriteFuture f) {
+ if (f.isWritten()) {
+ future.setValue(Boolean.TRUE);
+ } else {
+ future.setValue(f.getException());
+ }
+ finishWrite(future);
}
- finishWrite();
- }
+ });
+ }
- @SuppressWarnings("synthetic-access")
- private void finishWrite() {
- writes.remove(future);
- currentWrite.compareAndSet(future, null);
- try {
- startWriting();
- } catch (IOException e) {
- log.error("finishWrite({}) failed ({}) re-start writing", out, e.getClass().getSimpleName());
- }
+ protected void finishWrite(IoWriteFutureImpl future) {
+ writes.remove(future);
+ currentWrite.compareAndSet(future, null);
+ try {
+ startWriting();
+ } catch (IOException e) {
+ log.error("finishWrite({}) failed ({}) re-start writing: {}",
+ out, e.getClass().getSimpleName(), e.getMessage());
+ if (log.isDebugEnabled()) {
+ log.error("finishWrite(" + out + ") exception details", e);
}
- });
+ }
}
@Override
protected Closeable getInnerCloseable() {
return builder()
- .when(getId(), writes)
- .close(out)
- .build();
+ .when(getId(), writes)
+ .close(out)
+ .build();
}
@Override
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
index e2f1ebd..a2066b3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
@@ -78,7 +78,10 @@ public class ChannelAsyncOutputStream extends AbstractCloseable implements IoOut
packetWriter.close();
} catch (IOException e) {
log.error("preClose({}) Failed ({}) to pre-close packet writer: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
+ this, e.getClass().getSimpleName(), e.getMessage());
+ if (log.isDebugEnabled()) {
+ log.error("preClose(" + this + ") packet writer close exception details", e);
+ }
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java
index a5168ee..4d04dea 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java
@@ -138,10 +138,8 @@ public class ChannelOutputStream extends OutputStream implements java.nio.channe
log.trace("write({}) len={} - available={}", this, l, available);
}
} catch (IOException e) {
- if (debugEnabled) {
- log.debug("write({}) failed ({}) to wait for space of len={}: {}",
- this, e.getClass().getSimpleName(), l, e.getMessage());
- }
+ log.error("write({}) failed ({}) to wait for space of len={}: {}",
+ this, e.getClass().getSimpleName(), l, e.getMessage());
if ((e instanceof WindowClosedException) && (!closedState.getAndSet(true))) {
if (debugEnabled) {
@@ -198,11 +196,11 @@ public class ChannelOutputStream extends OutputStream implements java.nio.channe
log.trace("flush({}) len={}, available={}", this, total, available);
}
} catch (IOException e) {
+ log.error("flush({}) failed ({}) to wait for space of len={}: {}",
+ this, e.getClass().getSimpleName(), total, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("flush({}) failed ({}) to wait for space of len={}: {}",
- this, e.getClass().getSimpleName(), total, e.getMessage());
+ log.error("flush(" + this + ") wait for space len=" + total + " exception details", e);
}
-
throw e;
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
index 5be03e1..a31cacf 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
@@ -702,9 +702,9 @@ public class DefaultForwardingFilter
}
} catch (Error e) {
log.warn("localPortForwardingRequested({})[{}] failed ({}) to consult forwarding filter: {}",
- session, local, e.getClass().getSimpleName(), e.getMessage());
+ session, local, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("localPortForwardingRequested(" + this + ")[" + local + "] filter consultation failure details", e);
+ log.warn("localPortForwardingRequested(" + session + ")[" + local + "] filter consultation failure details", e);
}
throw new RuntimeSshException(e);
}
@@ -974,7 +974,7 @@ public class DefaultForwardingFilter
}
return (InetSocketAddress) GenericUtils.head(after);
} catch (IOException bindErr) {
- Set<SocketAddress> after = acceptor.getBoundAddresses();
+ Collection<SocketAddress> after = acceptor.getBoundAddresses();
if (GenericUtils.isEmpty(after)) {
close();
}
@@ -1123,11 +1123,9 @@ public class DefaultForwardingFilter
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
session.setAttribute(TcpipForwardingExceptionMarker.class, cause);
+ log.warn("exceptionCaught({}) {}: {}", session, cause.getClass().getSimpleName(), cause.getMessage());
if (debugEnabled) {
- log.debug("exceptionCaught({}) {}: {}", session, cause.getClass().getSimpleName(), cause.getMessage());
- }
- if (traceEnabled) {
- log.trace("exceptionCaught(" + session + ") caught exception details", cause);
+ log.warn("exceptionCaught(" + session + ") caught exception details", cause);
}
session.close(true);
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
index 066df84..73c4863 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
@@ -114,13 +114,11 @@ public abstract class Nio2Service extends AbstractInnerCloseable implements IoSe
throw new SocketTimeoutException("Failed to receive closure confirmation within " + maxWait + " millis");
}
} catch (IOException e) {
- if (log.isDebugEnabled()) {
- log.debug("dispose({}) {} while stopping service: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("dispose({}) {} while stopping service: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("dispose(" + this + ") Stop exception details", e);
+ if (log.isDebugEnabled()) {
+ log.warn("dispose(" + this + ") Stop exception details", e);
}
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
index aaeab26..d683015 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
@@ -138,23 +138,18 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
public void suspend() {
AsynchronousSocketChannel socket = getSocket();
- boolean debugEnabled = log.isDebugEnabled();
try {
socket.shutdownInput();
} catch (IOException e) {
- if (debugEnabled) {
- log.debug("suspend({}) failed ({}) to shutdown input: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("suspend({}) failed ({}) to shutdown input: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
}
try {
socket.shutdownOutput();
} catch (IOException e) {
- if (debugEnabled) {
- log.debug("suspend({}) failed ({}) to shutdown output: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("suspend({}) failed ({}) to shutdown output: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
}
}
@@ -194,13 +189,11 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
handler.exceptionCaught(this, exc);
} catch (Throwable e) {
Throwable t = GenericUtils.peelException(e);
- if (log.isDebugEnabled()) {
- log.debug("exceptionCaught({}) Exception handler threw {}, closing the session: {}",
- this, t.getClass().getSimpleName(), t.getMessage());
- }
+ log.warn("exceptionCaught({}) Exception handler threw {}, closing the session: {}",
+ this, t.getClass().getSimpleName(), t.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("exceptionCaught(" + this + ") exception handler failure details", t);
+ if (log.isDebugEnabled()) {
+ log.warn("exceptionCaught(" + this + ") exception handler failure details", t);
}
}
}
@@ -263,12 +256,11 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
if (debugEnabled) {
log.debug("doCloseImmediately({}) socket={} closed", this, socket);
}
-
} catch (IOException e) {
log.info("doCloseImmediately({}) {} caught while closing socket={}: {}",
this, e.getClass().getSimpleName(), socket, e.getMessage());
if (debugEnabled) {
- log.debug("doCloseImmediately(" + this + ") socket=" + socket + " close failure details", e);
+ log.info("doCloseImmediately(" + this + ") socket=" + socket + " close failure details", e);
}
}
@@ -279,13 +271,10 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
try {
handler.sessionClosed(this);
} catch (Throwable e) {
- if (debugEnabled) {
- log.debug("doCloseImmediately({}) {} while calling IoHandler#sessionClosed: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
-
- if (log.isTraceEnabled()) {
- log.trace("doCloseImmediately(" + this + ") IoHandler#sessionClosed failure details", e);
+ log.warn("doCloseImmediately({}) {} while calling IoHandler#sessionClosed: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
+ if (log.isDebugEnabled()) {
+ log.warn("doCloseImmediately(" + this + ") IoHandler#sessionClosed failure details", e);
}
}
@@ -457,8 +446,10 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
try {
socket.write(buffer, null, completionHandler);
} catch (Throwable t) {
+ log.warn("handleCompletedWriteCycle({}) {} while writing to socket len={}: {}",
+ this, t.getClass().getSimpleName(), writeLen, t.getMessage());
if (log.isDebugEnabled()) {
- log.debug("handleCompletedWriteCycle(" + this + ") Exception caught while writing " + writeLen + " bytes", t);
+ log.warn("handleCompletedWriteCycle(" + this + ") Exception caught while writing " + writeLen + " bytes", t);
}
future.setWritten();
finishWrite(future);
@@ -485,8 +476,7 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
this, exc.getClass().getSimpleName(), writeLen, exc.getMessage());
}
- boolean traceEnabled = log.isTraceEnabled();
- if (traceEnabled) {
+ if (log.isTraceEnabled()) {
log.trace("handleWriteCycleFailure(" + this + ") len=" + writeLen + " failure details", exc);
}
future.setException(exc);
@@ -496,10 +486,8 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
try {
finishWrite(future);
} catch (RuntimeException e) {
- if (traceEnabled) {
- log.trace("handleWriteCycleFailure({}) failed ({}) to finish writing: {}",
- this, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("handleWriteCycleFailure({}) failed ({}) to finish writing: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
index 6f8233e..4e706f5 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
@@ -255,12 +255,10 @@ public abstract class AbstractConnectionService
} catch (Throwable e) {
session.exceptionCaught(e);
+ log.warn("sendHeartBeat({}) failed ({}) to send heartbeat #{} request={}: {}",
+ session, e.getClass().getSimpleName(), heartbeatCount, heartbeatType, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("sendHeartBeat({}) failed ({}) to send heartbeat #{} request={}: {}",
- session, e.getClass().getSimpleName(), heartbeatCount, heartbeatType, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("sendHeartBeat(" + session + ") exception details", e);
+ log.warn("sendHeartBeat(" + session + ") exception details", e);
}
return false;
@@ -818,9 +816,10 @@ public abstract class AbstractConnectionService
sendChannelOpenFailure(buf, sender, reasonCode, message, "");
}
} catch (IOException e) {
+ log.warn("operationComplete({}) {}: {}",
+ AbstractConnectionService.this, e.getClass().getSimpleName(), e.getMessage());
if (debugEnabled) {
- log.debug("operationComplete({}) {}: {}",
- AbstractConnectionService.this, e.getClass().getSimpleName(), e.getMessage());
+ log.warn("operationComplete(" + AbstractConnectionService.this + ") exception details", e);
}
session.exceptionCaught(e);
}
@@ -875,7 +874,7 @@ public abstract class AbstractConnectionService
log.warn("globalRequest({})[{}, want-reply={}] failed ({}) to process: {}",
this, req, wantReply, e.getClass().getSimpleName(), e.getMessage());
if (debugEnabled) {
- log.debug("globalRequest(" + this + ")[" + req + ", want-reply=" + wantReply + "] failure details", e);
+ log.warn("globalRequest(" + this + ")[" + req + ", want-reply=" + wantReply + "] failure details", e);
}
result = RequestHandler.Result.ReplyFailure;
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
index 6718034..d951e16 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
@@ -625,13 +625,11 @@ public abstract class AbstractSession extends SessionHelper {
try {
startService(serviceName, buffer);
} catch (Throwable e) {
- if (debugEnabled) {
- log.debug("handleServiceRequest({}) Service {} rejected: {} = {}",
- this, serviceName, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("handleServiceRequest({}) Service {} rejected: {} = {}",
+ this, serviceName, e.getClass().getSimpleName(), e.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("handleServiceRequest(" + this + ") service=" + serviceName + " rejection details", e);
+ if (debugEnabled) {
+ log.warn("handleServiceRequest(" + this + ") service=" + serviceName + " rejection details", e);
}
disconnect(SshConstants.SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE, "Bad service request: " + serviceName);
return false;
@@ -865,8 +863,10 @@ public abstract class AbstractSession extends SessionHelper {
try {
checkRekey();
} catch (GeneralSecurityException e) {
+ log.warn("writePacket({}) failed ({}) to check re-key: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("writePacket(" + this + ") rekey security exception details", e);
+ log.warn("writePacket(" + this + ") rekey security exception details", e);
}
throw ValidateUtils.initializeExceptionCause(
new ProtocolException("Failed (" + e.getClass().getSimpleName() + ")"
@@ -1804,7 +1804,7 @@ public abstract class AbstractSession extends SessionHelper {
log.warn("negotiate({}) failed ({}) to invoke disconnect handler due to mismatched KEX option={}: {}",
this, e.getClass().getSimpleName(), paramType, e.getMessage());
if (debugEnabled) {
- log.debug("negotiate(" + this + ") handler invocation exception details", e);
+ log.warn("negotiate(" + this + ") handler invocation exception details", e);
}
}
@@ -2041,8 +2041,10 @@ public abstract class AbstractSession extends SessionHelper {
try {
requestNewKeysExchange();
} catch (GeneralSecurityException e) {
+ log.warn("reExchangeKeys({}) failed ({}) to request new keys: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("reExchangeKeys(" + this + ") security exception details", e);
+ log.warn("reExchangeKeys(" + this + ") security exception details", e);
}
throw ValidateUtils.initializeExceptionCause(
new ProtocolException("Failed (" + e.getClass().getSimpleName() + ")"
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSessionIoHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSessionIoHandler.java
index 6b4f56c..04f2e73 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSessionIoHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSessionIoHandler.java
@@ -62,13 +62,10 @@ public abstract class AbstractSessionIoHandler extends AbstractLoggingBean imple
try {
session.messageReceived(message);
} catch (Error e) {
+ log.error("messageReceived({}) failed {} to handle message: {}",
+ ioSession, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("messageReceived({}) failed {} to handle message: {}",
- ioSession, e.getClass().getSimpleName(), e.getMessage());
- }
-
- if (log.isTraceEnabled()) {
- log.trace("messageReceived(" + ioSession + ") message handling error details", e);
+ log.error("messageReceived(" + ioSession + ") message handling error details", e);
}
throw new RuntimeSshException(e);
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java
index 7e021ba..1cb4c22 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java
@@ -226,8 +226,9 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
* @see #checkIdleTimeout(long, long, long)
*/
protected TimeoutIndicator checkForTimeouts() throws IOException {
+ boolean debugEnabled = log.isDebugEnabled();
if ((!isOpen()) || isClosing() || isClosed()) {
- if (log.isDebugEnabled()) {
+ if (debugEnabled) {
log.debug("checkForTimeouts({}) session closing", this);
}
return TimeoutIndicator.NONE;
@@ -238,7 +239,7 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
TimeoutStatus status =
(result == null) ? TimeoutStatus.NoTimeout : result.getStatus();
if ((status != null) && (status != TimeoutStatus.NoTimeout)) {
- if (log.isDebugEnabled()) {
+ if (debugEnabled) {
log.debug("checkForTimeouts({}) already detected {}", this, result);
}
return result;
@@ -264,13 +265,13 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
// If disconnect handler throws an exception continue with the disconnect
log.warn("checkForTimeouts({}) failed ({}) to invoke disconnect handler to handle {}: {}",
this, e.getClass().getSimpleName(), result, e.getMessage());
- if (log.isDebugEnabled()) {
- log.debug("checkForTimeouts(" + this + ") disconnect handler exception details", e);
+ if (debugEnabled) {
+ log.warn("checkForTimeouts(" + this + ") disconnect handler exception details", e);
}
}
if (resetTimeout) {
- if (log.isDebugEnabled()) {
+ if (debugEnabled) {
log.debug("checkForTimeouts({}) cancel {} due to handler intervention", this, result);
}
@@ -288,7 +289,7 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
return TimeoutIndicator.NONE;
}
- if (log.isDebugEnabled()) {
+ if (debugEnabled) {
log.debug("checkForTimeouts({}) disconnect - reason={}", this, result);
}
@@ -582,12 +583,10 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
});
} catch (Throwable err) {
Throwable e = GenericUtils.peelException(err);
+ log.error("Failed ({}) to announce session={} established: {}",
+ e.getClass().getSimpleName(), ioSession, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("Failed ({}) to announce session={} established: {}",
- e.getClass().getSimpleName(), ioSession, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("Session=" + ioSession + " establish failure details", e);
+ log.error("Session=" + ioSession + " establish failure details", e);
}
if (e instanceof Exception) {
throw (Exception) e;
@@ -612,12 +611,10 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
});
} catch (Throwable err) {
Throwable e = GenericUtils.peelException(err);
+ log.error("Failed ({}) to announce session={} created: {}",
+ e.getClass().getSimpleName(), ioSession, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("Failed ({}) to announce session={} created: {}",
- e.getClass().getSimpleName(), ioSession, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("Session=" + ioSession + " creation failure details", e);
+ log.error("Session=" + ioSession + " creation failure details", e);
}
if (e instanceof Exception) {
throw (Exception) e;
@@ -642,12 +639,10 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
});
} catch (Throwable err) {
Throwable e = GenericUtils.peelException(err);
+ log.error("signalPeerIdentificationReceived({}) Failed ({}) to announce peer={}: {}",
+ this, e.getClass().getSimpleName(), version, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("signalPeerIdentificationReceived({}) Failed ({}) to announce peer={}: {}",
- this, e.getClass().getSimpleName(), version, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("signalPeerIdentificationReceived(" + this + ")[" + version + "] failure details", e);
+ log.error("signalPeerIdentificationReceived(" + this + ")[" + version + "] failure details", e);
}
if (e instanceof Exception) {
throw (Exception) e;
@@ -680,12 +675,10 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
});
} catch (Throwable err) {
Throwable t = GenericUtils.peelException(err);
+ log.error("sendSessionEvent({})[{}] failed ({}) to inform listeners: {}",
+ this, event, t.getClass().getSimpleName(), t.getMessage());
if (log.isDebugEnabled()) {
- log.debug("sendSessionEvent({})[{}] failed ({}) to inform listeners: {}",
- this, event, t.getClass().getSimpleName(), t.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("sendSessionEvent(" + this + ")[" + event + "] listener inform details", t);
+ log.error("sendSessionEvent(" + this + ")[" + event + "] listener inform details", t);
}
if (t instanceof IOException) {
throw (IOException) t;
@@ -1084,20 +1077,19 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
IoWriteFuture packetFuture = writePacket(buffer, disconnectTimeoutMs, TimeUnit.MILLISECONDS);
packetFuture.addListener(future -> {
Throwable t = future.getException();
- if (log.isDebugEnabled()) {
- if (t == null) {
+ boolean debugEnabled = log.isDebugEnabled();
+ if (t == null) {
+ if (debugEnabled) {
log.debug("disconnect({}) operation successfully completed for reason={} [{}]",
SessionHelper.this, SshConstants.getDisconnectReasonName(reason), msg);
- } else {
- log.debug("disconnect({}) operation failed ({}) for reason={} [{}]: {}",
- SessionHelper.this, t.getClass().getSimpleName(),
- SshConstants.getDisconnectReasonName(reason), msg, t.getMessage());
}
- }
+ } else {
+ log.warn("disconnect({}) operation failed ({}) for reason={} [{}]: {}",
+ SessionHelper.this, t.getClass().getSimpleName(),
+ SshConstants.getDisconnectReasonName(reason), msg, t.getMessage());
- if (t != null) {
- if (log.isTraceEnabled()) {
- log.trace("disconnect(" + SessionHelper.this + ")"
+ if (debugEnabled) {
+ log.warn("disconnect(" + SessionHelper.this + ")"
+ " reason=" + SshConstants.getDisconnectReasonName(reason) + " failure details",
t);
}
@@ -1139,15 +1131,13 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
});
} catch (Throwable err) {
Throwable e = GenericUtils.peelException(err);
- if (log.isDebugEnabled()) {
- log.debug("signalDisconnect(" + this + ") signal session disconnect details", e);
- }
+ log.warn("signalDisconnect(" + this + ") signal session disconnect details", e);
- if (log.isTraceEnabled()) {
+ if (log.isDebugEnabled()) {
Throwable[] suppressed = e.getSuppressed();
if (GenericUtils.length(suppressed) > 0) {
for (Throwable s : suppressed) {
- log.trace("signalDisconnect(" + this + ") suppressed session disconnect signalling", s);
+ log.warn("signalDisconnect(" + this + ") suppressed session disconnect signalling", s);
}
}
}
@@ -1174,13 +1164,12 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
public void exceptionCaught(Throwable t) {
State curState = state.get();
// Ignore exceptions that happen while closing immediately
+ boolean debugEnabled = log.isDebugEnabled();
if ((!State.Opened.equals(curState)) && (!State.Graceful.equals(curState))) {
- if (log.isDebugEnabled()) {
- log.debug("exceptionCaught({}) ignore {} due to state={}, message='{}'",
- this, t.getClass().getSimpleName(), curState, t.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("exceptionCaught(" + this + ")[state=" + curState + "] ignored exception details", t);
+ log.warn("exceptionCaught({}) ignore {} due to state={}, message='{}'",
+ this, t.getClass().getSimpleName(), curState, t.getMessage());
+ if (debugEnabled) {
+ log.warn("exceptionCaught(" + this + ")[state=" + curState + "] ignored exception details", t);
}
return;
}
@@ -1196,10 +1185,10 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
this, curState, cause.getClass().getSimpleName(), cause.getMessage());
}
- if (log.isDebugEnabled()) {
- log.debug("exceptionCaught(" + this + ")[state=" + curState + "] details", t);
+ if (debugEnabled) {
+ log.warn("exceptionCaught(" + this + ")[state=" + curState + "] details", t);
if (cause != null) {
- log.debug("exceptionCaught(" + this + ")[state=" + curState + "] cause", cause);
+ log.warn("exceptionCaught(" + this + ")[state=" + curState + "] cause", cause);
}
}
@@ -1211,12 +1200,10 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
try {
disconnect(code, t.getMessage());
} catch (Throwable t2) {
- if (log.isDebugEnabled()) {
- log.debug("exceptionCaught({}) {} while disconnect with code={}: {}",
- this, t2.getClass().getSimpleName(), SshConstants.getDisconnectReasonName(code), t2.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("exceptionCaught(" + this + ")[code=" + SshConstants.getDisconnectReasonName(code) + "] disconnect exception details", t2);
+ log.warn("exceptionCaught({}) {} while disconnect with code={}: {}",
+ this, t2.getClass().getSimpleName(), SshConstants.getDisconnectReasonName(code), t2.getMessage());
+ if (debugEnabled) {
+ log.warn("exceptionCaught(" + this + ")[code=" + SshConstants.getDisconnectReasonName(code) + "] disconnect exception details", t2);
}
}
return;
@@ -1234,15 +1221,15 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
});
} catch (Throwable err) {
Throwable e = GenericUtils.peelException(err);
+ log.warn("signalExceptionCaught({}) {}: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("signalExceptionCaught(" + this + ") signal session exception details", e);
- }
+ log.warn("signalExceptionCaught(" + this + ") signal session exception details", e);
- if (log.isTraceEnabled()) {
Throwable[] suppressed = e.getSuppressed();
if (GenericUtils.length(suppressed) > 0) {
for (Throwable s : suppressed) {
- log.trace("signalExceptionCaught(" + this + ") suppressed session exception signalling", s);
+ log.warn("signalExceptionCaught(" + this + ") suppressed session exception signalling", s);
}
}
}
@@ -1268,14 +1255,12 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements
log.warn("signalSessionClosed({}) {} while signal session closed: {}",
this, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("signalSessionClosed(" + this + ") signal session closed exception details", e);
- }
+ log.warn("signalSessionClosed(" + this + ") signal session closed exception details", e);
- if (log.isTraceEnabled()) {
Throwable[] suppressed = e.getSuppressed();
if (GenericUtils.length(suppressed) > 0) {
for (Throwable s : suppressed) {
- log.trace("signalSessionClosed(" + this + ") suppressed session closed signalling", s);
+ log.warn("signalSessionClosed(" + this + ") suppressed session closed signalling", s);
}
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java
index de3d107..a5bc4ea 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java
@@ -84,12 +84,16 @@ public class SessionTimeoutListener
@Override
public void run() {
+ boolean debugEnabled = log.isDebugEnabled();
for (SessionHelper session : sessions) {
try {
session.checkForTimeouts();
} catch (Exception e) {
log.warn(e.getClass().getSimpleName() + " while checking"
+ " session=" + session + " timeouts: " + e.getMessage(), e);
+ if (debugEnabled) {
+ log.warn("Session " + session + " timeouts check exception details", e);
+ }
}
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/AbstractServerSession.java b/sshd-core/src/main/java/org/apache/sshd/server/session/AbstractServerSession.java
index 7da497a..7232935 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/AbstractServerSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/AbstractServerSession.java
@@ -265,7 +265,7 @@ public abstract class AbstractServerSession extends AbstractSession implements S
log.warn("startService({})[{}] failed ({}) to invoke disconnect handler: {}",
this, name, e.getClass().getSimpleName(), e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("startService(" + this + ")[" + name + "] disconnect handler invocation exception details", e);
+ log.warn("startService(" + this + ")[" + name + "] disconnect handler invocation exception details", e);
}
}
@@ -336,7 +336,7 @@ public abstract class AbstractServerSession extends AbstractSession implements S
log.warn("handleServiceAccept({}) failed ({}) to invoke disconnect handler of unknown service={}: {}",
this, e.getClass().getSimpleName(), serviceName, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("handleServiceAccept(" + this + ")[" + serviceName + "] handler invocation exception details", e);
+ log.warn("handleServiceAccept(" + this + ")[" + serviceName + "] handler invocation exception details", e);
}
}
@@ -374,7 +374,7 @@ public abstract class AbstractServerSession extends AbstractSession implements S
log.warn("resolveAvailableSignaturesProposal({}) failed ({}) to get key types: {}",
this, e.getClass().getSimpleName(), e.getMessage());
if (debugEnabled) {
- log.debug("resolveAvailableSignaturesProposal(" + this + ") fetch key types failure details", e);
+ log.warn("resolveAvailableSignaturesProposal(" + this + ") fetch key types failure details", e);
}
throw new RuntimeSshException(e);
@@ -430,7 +430,7 @@ public abstract class AbstractServerSession extends AbstractSession implements S
log.warn("readIdentification({}) failed ({}) to accept proxy metadata: {}",
this, t.getClass().getSimpleName(), t.getMessage());
if (debugEnabled) {
- log.debug("readIdentification(" + this + ") proxy metadata acceptance failure details", t);
+ log.warn("readIdentification(" + this + ") proxy metadata acceptance failure details", t);
}
if (t instanceof IOException) {
@@ -503,7 +503,7 @@ public abstract class AbstractServerSession extends AbstractSession implements S
log.warn("getHostKey({}) failed ({}) to load key of type={}[{}]: {}",
this, e.getClass().getSimpleName(), proposedKey, keyType, e.getMessage());
if (log.isDebugEnabled()) {
- log.debug("getHostKey(" + this + ") " + proposedKey + "[" + keyType + "] key load failure details", e);
+ log.warn("getHostKey(" + this + ") " + proposedKey + "[" + keyType + "] key load failure details", e);
}
throw new RuntimeSshException(e);
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
index 242267e..9847c4c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
@@ -193,12 +193,10 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
return;
} catch (Exception e) {
// Continue
+ log.warn("process({}) Failed ({}) to authenticate using current method={}: {}",
+ session, e.getClass().getSimpleName(), currentAuth.getName(), e.getMessage());
if (debugEnabled) {
- log.debug("process({}) Failed ({}) to authenticate using current method={}: {}",
- session, e.getClass().getSimpleName(), currentAuth.getName(), e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("process(" + session + ") current authentication=" + currentAuth.getName() + " failure details", e);
+ log.warn("process(" + session + ") current authentication=" + currentAuth.getName() + " failure details", e);
}
}
}
@@ -276,7 +274,7 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
this.authUserName, username, this.authService, service,
nbAuthRequests, maxAuthRequests, e.getMessage());
if (debugEnabled) {
- log.debug("process(" + session + ") disconnect handler auth requests count invocation exception", e);
+ log.warn("process(" + session + ") disconnect handler auth requests count invocation exception", e);
}
}
@@ -304,7 +302,7 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
session, e.getClass().getSimpleName(),
this.authUserName, username, this.authService, service, e.getMessage());
if (debugEnabled) {
- log.debug("handleUserAuthRequestMessage(" + session + ") disconnect handler auth mismatched parameters invocation exception", e);
+ log.warn("handleUserAuthRequestMessage(" + session + ") disconnect handler auth mismatched parameters invocation exception", e);
}
}
@@ -347,12 +345,10 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
async.addListener(authenticated -> asyncAuth(SshConstants.SSH_MSG_USERAUTH_REQUEST, buffer, authenticated));
return false;
} catch (Exception e) {
+ log.warn("handleUserAuthRequestMessage({}) Failed ({}) to authenticate using factory method={}: {}",
+ session, e.getClass().getSimpleName(), method, e.getMessage());
if (debugEnabled) {
- log.debug("handleUserAuthRequestMessage({}) Failed ({}) to authenticate using factory method={}: {}",
- session, e.getClass().getSimpleName(), method, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("handleUserAuthRequestMessage(" + session + ") factory authentication=" + method + " failure details", e);
+ log.warn("handleUserAuthRequestMessage(" + session + ") factory authentication=" + method + " failure details", e);
}
}
@@ -367,7 +363,12 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
handleAuthenticationFailure(cmd, buffer);
}
} catch (Exception e) {
- log.warn("Error performing async authentication: {}", e.getMessage(), e);
+ ServerSession session = getServerSession();
+ log.warn("asyncAuth({}) Error ({}) performing async authentication via cmd={}: {}",
+ session, e.getClass().getSimpleName(), cmd, e.getMessage());
+ if (log.isDebugEnabled()) {
+ log.warn("asyncAuth(" + session + ")[cmd=" + cmd + "] exception details", e);
+ }
}
}
@@ -411,7 +412,7 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
log.warn("handleAuthenticationSuccess({}@{}) failed ({}) to invoke disconnect handler due to {}/{} sessions count: {}",
username, session, e.getClass().getSimpleName(), currentSessionCount, maxSessionCount, e.getMessage());
if (debugEnabled) {
- log.debug("handleAuthenticationSuccess(" + username + "@" + session + ") invocation handler exception details", e);
+ log.warn("handleAuthenticationSuccess(" + username + "@" + session + ") invocation handler exception details", e);
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/x11/DefaultX11ForwardSupport.java b/sshd-core/src/main/java/org/apache/sshd/server/x11/DefaultX11ForwardSupport.java
index e5cd422..94506f7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/x11/DefaultX11ForwardSupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/x11/DefaultX11ForwardSupport.java
@@ -45,7 +45,6 @@ import org.apache.sshd.common.util.closeable.AbstractInnerCloseable;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements X11ForwardSupport {
-
private final ConnectionService service;
private IoAcceptor acceptor;
@@ -80,7 +79,7 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
if (OsUtils.isWin32()) {
if (debugEnabled) {
log.debug("createDisplay(auth={}, cookie={}, screen={}) Windows O/S N/A",
- authenticationProtocol, authenticationCookie, screen);
+ authenticationProtocol, authenticationCookie, screen);
}
return null;
}
@@ -108,8 +107,8 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
} catch (BindException bindErr) {
if (debugEnabled) {
log.debug("createDisplay(auth={}, cookie={}, screen={}) failed ({}) to bind to address={}: {}",
- authenticationProtocol, authenticationCookie, screen,
- bindErr.getClass().getSimpleName(), addr, bindErr.getMessage());
+ authenticationProtocol, authenticationCookie, screen,
+ bindErr.getClass().getSimpleName(), addr, bindErr.getMessage());
}
addr = null;
@@ -125,13 +124,13 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
if (GenericUtils.isEmpty(boundAddresses)) {
if (debugEnabled) {
log.debug("createDisplay(auth={}, cookie={}, screen={}) closing - no more bound addresses",
- authenticationProtocol, authenticationCookie, screen);
+ authenticationProtocol, authenticationCookie, screen);
}
close();
} else {
if (debugEnabled) {
log.debug("createDisplay(auth={}, cookie={}, screen={}) closing - remaining bound addresses: {}",
- authenticationProtocol, authenticationCookie, screen, boundAddresses);
+ authenticationProtocol, authenticationCookie, screen, boundAddresses);
}
}
@@ -142,14 +141,18 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
int displayNumber = port - basePort;
String authDisplay = "unix:" + displayNumber + "." + screen;
try {
- Process p = new ProcessBuilder(XAUTH_COMMAND, "remove", authDisplay).start();
+ ProcessBuilder processBuilder = new ProcessBuilder(XAUTH_COMMAND, "remove", authDisplay);
+ Process p = processBuilder.start();
int result = p.waitFor();
if (debugEnabled) {
log.debug("createDisplay({}) {} remove result={}", authDisplay, XAUTH_COMMAND, result);
}
if (result == 0) {
- p = new ProcessBuilder(XAUTH_COMMAND, "add", authDisplay, authenticationProtocol, authenticationCookie).start();
+ processBuilder =
+ new ProcessBuilder(
+ XAUTH_COMMAND, "add", authDisplay, authenticationProtocol, authenticationCookie);
+ p = processBuilder.start();
result = p.waitFor();
if (debugEnabled) {
@@ -164,9 +167,9 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
return bindHost + ":" + displayNumber + "." + screen;
} catch (Throwable e) {
log.warn("createDisplay({}) failed ({}) run xauth: {}",
- authDisplay, e.getClass().getSimpleName(), e.getMessage());
+ authDisplay, e.getClass().getSimpleName(), e.getMessage());
if (debugEnabled) {
- log.debug("createDisplay(" + authDisplay + ") xauth failure details", e);
+ log.warn("createDisplay(" + authDisplay + ") xauth failure details", e);
}
return null;
}
@@ -180,7 +183,8 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
log.debug("sessionCreated({}) channel{}", session, channel);
}
this.service.registerChannel(channel);
- channel.open().verify(channel.getLongProperty(CHANNEL_OPEN_TIMEOUT_PROP, DEFAULT_CHANNEL_OPEN_TIMEOUT));
+ long openTimeout = channel.getLongProperty(CHANNEL_OPEN_TIMEOUT_PROP, DEFAULT_CHANNEL_OPEN_TIMEOUT);
+ channel.open().verify(openTimeout);
}
@Override
@@ -190,7 +194,7 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
if (channel != null) {
if (log.isDebugEnabled()) {
log.debug("sessionClosed({}) close channel={} - cause={}",
- session, channel, (cause == null) ? null : cause.getClass().getSimpleName());
+ session, channel, (cause == null) ? null : cause.getClass().getSimpleName());
}
// If exception signaled then close channel immediately
channel.close(cause != null);
@@ -214,11 +218,11 @@ public class DefaultX11ForwardSupport extends AbstractInnerCloseable implements
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
session.setAttribute(X11ForwardingExceptionMarker.class, cause);
+ log.error("exceptionCaught({}) {}: {}",
+ session, cause.getClass().getSimpleName(), cause.getMessage());
+
if (log.isDebugEnabled()) {
- log.debug("exceptionCaught({}) {}: {}", session, cause.getClass().getSimpleName(), cause.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("exceptionCaught(" + session + ") caught exception details", cause);
+ log.error("exceptionCaught(" + session + ") caught exception details", cause);
}
session.close(true);
}
diff --git a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
index 7987fda..efaf8c0 100644
--- a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
+++ b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
@@ -101,8 +101,10 @@ public class MinaAcceptor extends MinaService implements org.apache.sshd.common.
try {
listener.abortAcceptedConnection(this, local, remote, service, e);
} catch (Exception exc) {
+ log.warn("sessionCreated({})[{}] ignoring abort event failure={}: {}",
+ session, listener, exc.getClass().getSimpleName(), exc.getMessage());
if (log.isDebugEnabled()) {
- log.debug("sessionCreated(" + session + ") listener=" + listener + " ignoring abort event exception", exc);
+ log.warn("sessionCreated(" + session + ") listener=" + listener + " ignoring abort event exception", exc);
}
}
}
diff --git a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
index 620de98..d8e506a 100644
--- a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
+++ b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
@@ -98,8 +98,10 @@ public class MinaConnector extends MinaService implements org.apache.sshd.common
try {
listener.abortEstablishedConnection(this, local, context, remote, e);
} catch (Exception exc) {
+ log.warn("sessionCreated({}) ignoring abort connection failure={}: {}",
+ session, exc.getClass().getSimpleName(), exc.getMessage());
if (log.isDebugEnabled()) {
- log.debug("sessionCreated(" + session + ") listener=" + listener + " ignoring abort event exception", exc);
+ log.warn("sessionCreated(" + session + ") listener=" + listener + " ignoring abort event exception", exc);
}
}
}
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpDirEntryIterator.java b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpDirEntryIterator.java
index abf3a1d..dd04766 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpDirEntryIterator.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpDirEntryIterator.java
@@ -177,8 +177,8 @@ public class SftpDirEntryIterator extends AbstractLoggingBean implements Iterato
try {
close();
} catch (IOException t) {
- if (log.isTraceEnabled()) {
- log.trace(t.getClass().getSimpleName() + " while close handle=" + handle
+ if (log.isDebugEnabled()) {
+ log.warn(t.getClass().getSimpleName() + " while close handle=" + handle
+ " due to " + e.getClass().getSimpleName() + " [" + e.getMessage() + "]"
+ ": " + t.getMessage());
}
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/fs/SftpFileSystemProvider.java b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/fs/SftpFileSystemProvider.java
index 5acf6da..0e58138 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/fs/SftpFileSystemProvider.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/fs/SftpFileSystemProvider.java
@@ -267,7 +267,7 @@ public class SftpFileSystemProvider extends FileSystemProvider {
session.close();
} catch (IOException t) {
if (log.isDebugEnabled()) {
- log.debug("Failed (" + t.getClass().getSimpleName() + ")"
+ log.warn("Failed (" + t.getClass().getSimpleName() + ")"
+ " to close session for new file system on " + host + ":" + port
+ " due to " + e.getClass().getSimpleName() + "[" + e.getMessage() + "]"
+ ": " + t.getMessage());
@@ -293,7 +293,8 @@ public class SftpFileSystemProvider extends FileSystemProvider {
return fileSystem;
}
- protected SftpVersionSelector resolveSftpVersionSelector(URI uri, SftpVersionSelector defaultSelector, PropertyResolver resolver) {
+ protected SftpVersionSelector resolveSftpVersionSelector(
+ URI uri, SftpVersionSelector defaultSelector, PropertyResolver resolver) {
String preference = resolver.getString(VERSION_PARAM);
if (GenericUtils.isEmpty(preference)) {
return defaultSelector;
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java
index 468610a..2a00052 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java
@@ -102,13 +102,11 @@ public class SimpleSftpClientImpl extends AbstractLoggingBean implements SimpleS
try {
client.close();
} catch (Exception t) {
- if (log.isDebugEnabled()) {
- log.debug("createSftpClient({}) failed ({}) to close client: {}",
- session, t.getClass().getSimpleName(), t.getMessage());
- }
+ log.warn("createSftpClient({}) failed ({}) to close client: {}",
+ session, t.getClass().getSimpleName(), t.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("createSftpClient(" + session + ") client close failure details", t);
+ if (log.isDebugEnabled()) {
+ log.warn("createSftpClient(" + session + ") client close failure details", t);
}
err = GenericUtils.accumulateException(err, t);
}
@@ -119,18 +117,16 @@ public class SimpleSftpClientImpl extends AbstractLoggingBean implements SimpleS
// This point is reached if error occurred
log.warn("createSftpClient({}) failed ({}) to create session: {}",
- session, err.getClass().getSimpleName(), err.getMessage());
+ session, err.getClass().getSimpleName(), err.getMessage());
try {
session.close();
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.debug("createSftpClient({}) failed ({}) to close session: {}",
- session, e.getClass().getSimpleName(), e.getMessage());
- }
+ log.warn("createSftpClient({}) failed ({}) to close session: {}",
+ session, e.getClass().getSimpleName(), e.getMessage());
- if (log.isTraceEnabled()) {
- log.trace("createSftpClient(" + session + ") session close failure details", e);
+ if (log.isDebugEnabled()) {
+ log.warn("createSftpClient(" + session + ") session close failure details", e);
}
err = GenericUtils.accumulateException(err, e);
}
@@ -152,9 +148,9 @@ public class SimpleSftpClientImpl extends AbstractLoggingBean implements SimpleS
try {
result = method.invoke(client, args);
} catch (Throwable t) {
- if (log.isTraceEnabled()) {
- log.trace("invoke(SftpClient#{}) failed ({}) to execute: {}",
- name, t.getClass().getSimpleName(), t.getMessage());
+ if (log.isDebugEnabled()) {
+ log.warn("invoke(SftpClient#{}) failed ({}) to execute: {}",
+ name, t.getClass().getSimpleName(), t.getMessage());
}
err = GenericUtils.accumulateException(err, t);
}
@@ -165,8 +161,8 @@ public class SimpleSftpClientImpl extends AbstractLoggingBean implements SimpleS
session.close();
} catch (Throwable t) {
if (log.isDebugEnabled()) {
- log.debug("invoke(ClientSession#{}) failed ({}) to execute: {}",
- name, t.getClass().getSimpleName(), t.getMessage());
+ log.warn("invoke(ClientSession#{}) failed ({}) to execute: {}",
+ name, t.getClass().getSimpleName(), t.getMessage());
}
err = GenericUtils.accumulateException(err, t);
}
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
index 1380251..e53cb44 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
@@ -1466,12 +1466,10 @@ public abstract class AbstractSftpSubsystemHelper
try {
attrs = getAttributes(p, options);
} catch (IOException e) {
- if (debugEnabled) {
- log.debug("doRealPath({}) - failed ({}) to retrieve attributes of {}: {}",
- session, e.getClass().getSimpleName(), p, e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("doRealPath(" + session + ")[" + p + "] attributes retrieval failure details", e);
+ log.warn("doRealPath({}) - failed ({}) to retrieve attributes of {}: {}",
+ session, e.getClass().getSimpleName(), p, e.getMessage());
+ if (log.isDebugEnabled()) {
+ log.warn("doRealPath(" + session + ")[" + p + "] attributes retrieval failure details", e);
}
}
} else {
@@ -2414,6 +2412,7 @@ public abstract class AbstractSftpSubsystemHelper
Path file, int flags, Map<String, Object> current, LinkOption... options)
throws IOException {
boolean debugEnabled = log.isDebugEnabled();
+ ServerSession session = getServerSession();
NavigableMap<String, Object> attrs = null;
// Cannot use forEach because the attrs variable is not effectively final
for (Map.Entry<String, FileInfoExtractor<?>> re : SftpFileSystemAccessor.FILEATTRS_RESOLVERS.entrySet()) {
@@ -2434,15 +2433,13 @@ public abstract class AbstractSftpSubsystemHelper
if (debugEnabled) {
log.debug("resolveMissingFileAttributes({})[{}[{}]] replace {} with {}",
- getServerSession(), file, name, value, resolved);
+ session, file, name, value, resolved);
}
} catch (IOException e) {
- if (debugEnabled) {
- log.debug("resolveMissingFileAttributes({})[{}[{}]] failed ({}) to resolve missing value: {}",
- getServerSession(), file, name, e.getClass().getSimpleName(), e.getMessage());
- }
- if (log.isTraceEnabled()) {
- log.trace("resolveMissingFileAttributes(" + getServerSession() + ")"
+ log.warn("resolveMissingFileAttributes({})[{}[{}]] failed ({}) to resolve missing value: {}",
+ session, file, name, e.getClass().getSimpleName(), e.getMessage());
+ if (log.isDebugEnabled()) {
+ log.warn("resolveMissingFileAttributes(" + session + ")"
+ "[" + file + "[" + name + "]] missing value resolution failure details", e);
}
}
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
index c9bfd97..2cbfc52 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
@@ -279,7 +279,7 @@ public class SftpSubsystem
CloseableExecutorService executor = getExecutorService();
pendingFuture = executor.submit(this);
} catch (RuntimeException e) { // e.g., RejectedExecutionException
- log.error("Failed (" + e.getClass().getSimpleName() + ") to start command: " + e.toString(), e);
+ log.error("Failed (" + e.getClass().getSimpleName() + ") to start command: " + e.getMessage(), e);
throw new IOException(e);
}
}
@@ -324,7 +324,7 @@ public class SftpSubsystem
log.error("run({}) {} caught in SFTP subsystem: {}",
session, t.getClass().getSimpleName(), t.getMessage());
if (log.isDebugEnabled()) {
- log.debug("run(" + session + ") caught exception details", t);
+ log.error("run(" + session + ") caught exception details", t);
}
}
} finally {
@@ -1011,7 +1011,7 @@ public class SftpSubsystem
log.warn("destroy({}) Failed ({}) to announce destruction event: {}",
session, e.getClass().getSimpleName(), e.getMessage());
if (debugEnabled) {
- log.debug("destroy(" + session + ") destruction announcement failure details", e);
+ log.warn("destroy(" + session + ") destruction announcement failure details", e);
}
}
@@ -1043,7 +1043,7 @@ public class SftpSubsystem
}
} catch (IOException e) {
if (debugEnabled) {
- log.debug("destroy(" + session + ")"
+ log.warn("destroy(" + session + ")"
+ " failed (" + e.getClass().getSimpleName() + ")"
+ " to close file system: " + e.getMessage(), e);
}