diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java index 20861bae9..ccbfb43d3 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java @@ -343,15 +343,13 @@ public class ModeledConnection extends ModeledChildDirectoryObject implements User { if (attributes.containsKey(ACCESS_WINDOW_START_ATTRIBUTE_NAME)) { try { getModel().setAccessWindowStart(parseTime(attributes.get(ACCESS_WINDOW_START_ATTRIBUTE_NAME))); } catch (ParseException e) { - logger.warn("Not setting start time of user access window: {}", e.getMessage()); - logger.debug("Unable to parse time attribute.", e); + logger.warn("Not setting start time of user access window: {}", e.getMessage(), e); } } @@ -451,8 +450,7 @@ public class ModeledUser extends ModeledPermissions implements User { if (attributes.containsKey(ACCESS_WINDOW_END_ATTRIBUTE_NAME)) { try { getModel().setAccessWindowEnd(parseTime(attributes.get(ACCESS_WINDOW_END_ATTRIBUTE_NAME))); } catch (ParseException e) { - logger.warn("Not setting end time of user access window: {}", e.getMessage()); - logger.debug("Unable to parse time attribute.", e); + logger.warn("Not setting end time of user access window: {}", e.getMessage(), e); } } @@ -460,8 +458,7 @@ public class ModeledUser extends ModeledPermissions implements User { if (attributes.containsKey(VALID_FROM_ATTRIBUTE_NAME)) { try { getModel().setValidFrom(parseDate(attributes.get(VALID_FROM_ATTRIBUTE_NAME))); } catch (ParseException e) { - logger.warn("Not setting user validity start date: {}", e.getMessage()); - logger.debug("Unable to parse date attribute.", e); + logger.warn("Not setting user validity start date: {}", e.getMessage(), e); } } @@ -469,8 +466,7 @@ public class ModeledUser extends ModeledPermissions implements User { if (attributes.containsKey(VALID_UNTIL_ATTRIBUTE_NAME)) { try { getModel().setValidUntil(parseDate(attributes.get(VALID_UNTIL_ATTRIBUTE_NAME))); } catch (ParseException e) { - logger.warn("Not setting user validity end date: {}", e.getMessage()); - logger.debug("Unable to parse date attribute.", e); + logger.warn("Not setting user validity end date: {}", e.getMessage(), e); } } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java index 6064ddaf2..57bf2ddbf 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java @@ -325,13 +325,9 @@ public class ModeledUserContext extends RestrictedObject } catch (GuacamoleException e) { - - logger.warn( - "Unable to determine if access window enforcement is" - + " enabled for active sessions; enforcing by default: {}" - , e.getMessage()); - logger.debug("Unable to determine access window enforcement policy.", e); - + logger.warn("Unable to determine if access window enforcement is" + + " enabled for active sessions; enforcing by default: {}", + e.getMessage(), e); } // A user context is valid if the associated user's account is valid diff --git a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/RequestValidationService.java b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/RequestValidationService.java index 12cd1c6ab..f7a591407 100644 --- a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/RequestValidationService.java +++ b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/RequestValidationService.java @@ -78,14 +78,15 @@ public class RequestValidationService { // Deny all requests if restrictions cannot be parsed catch (GuacamoleException e) { - logger.warn("Authentication request from \"{}\" is DENIED due to parse error: {}", credentials.getRemoteAddress(), e.getMessage()); - logger.debug("Error parsing authentication request restrictions from guacamole.properties.", e); + logger.warn("Authentication request from \"{}\" is DENIED due to " + + "parse error: {}", credentials.getRemoteAddress(), e.getMessage(), e); return false; } // All requests are allowed if no restrictions are defined if (trustedNetworks.isEmpty()) { - logger.debug("Authentication request from \"{}\" is ALLOWED (no restrictions).", credentials.getRemoteAddress()); + logger.debug("Authentication request from \"{}\" is ALLOWED (no " + + "restrictions).", credentials.getRemoteAddress()); return true; } @@ -94,14 +95,16 @@ public class RequestValidationService { // Request is allowed if any subnet matches if (new IPAddressString(network).contains(new IPAddressString(credentials.getRemoteAddress()))) { - logger.debug("Authentication request from \"{}\" is ALLOWED (matched subnet).", credentials.getRemoteAddress()); + logger.debug("Authentication request from \"{}\" is ALLOWED " + + "(matched subnet).", credentials.getRemoteAddress()); return true; } } // Otherwise request is denied - no subnets matched - logger.debug("Authentication request from \"{}\" is DENIED (did not match subnet).", credentials.getRemoteAddress()); + logger.debug("Authentication request from \"{}\" is DENIED (did not " + + "match subnet).", credentials.getRemoteAddress()); return false; } diff --git a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/UserDataService.java b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/UserDataService.java index 33b5beb7d..717abfe07 100644 --- a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/UserDataService.java +++ b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/UserDataService.java @@ -168,22 +168,19 @@ public class UserDataService { // Fail if base64 data is not valid catch (IllegalArgumentException e) { - logger.warn("Submitted data is not proper base64."); - logger.debug("Invalid base64 data.", e); + logger.warn("Submitted data is not proper base64: {}", e.getMessage(), e); return null; } // Handle lack of standard UTF-8 support (should never happen) catch (UnsupportedEncodingException e) { - logger.error("Unexpected lack of support for UTF-8: {}", e.getMessage()); - logger.debug("Unable to decode base64 data as UTF-8.", e); + logger.error("Unexpected lack of support for UTF-8: {}", e.getMessage(), e); return null; } // Fail if decryption or key retrieval fails for any reason catch (GuacamoleException e) { - logger.error("Decryption of received data failed: {}", e.getMessage()); - logger.debug("Unable to decrypt received data.", e); + logger.error("Decryption of received data failed: {}", e.getMessage(), e); return null; } @@ -205,8 +202,7 @@ public class UserDataService { // Fail UserData creation if JSON is invalid/unreadable catch (IOException e) { - logger.error("Received JSON is invalid: {}", e.getMessage()); - logger.debug("Error parsing UserData JSON.", e); + logger.error("Received JSON is invalid: {}", e.getMessage(), e); return null; } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPConnectionService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPConnectionService.java index 06f83b5eb..f9f76082e 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPConnectionService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPConnectionService.java @@ -322,8 +322,7 @@ public class LDAPConnectionService { ldapConnection.close(); logger.error("Binding with the LDAP server at \"{}\" as user " + "\"{}\" failed: {}", config.getLdapHost(), bindUser, - e.getMessage()); - logger.debug("Unable to bind to LDAP server.", e); + e.getMessage(), e); return null; } @@ -369,8 +368,8 @@ public class LDAPConnectionService { } catch (LdapInvalidDnException e) { logger.error("Credentials of existing connection cannot be used. " - + "The username used (\"{}\") is not a valid DN.", username); - logger.debug("Cannot bind using invalid DN.", e); + + "The username used (\"{}\") is not a valid DN.", + username, e); ldapConnection.close(); return null; } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ObjectQueryService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ObjectQueryService.java index 02814ac9c..42d57d19f 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ObjectQueryService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ObjectQueryService.java @@ -265,8 +265,7 @@ public class ObjectQueryService { + "URL \"{}\".", url); } catch (GuacamoleException e) { - logger.warn("Referral to \"{}\" could not be followed: {}", url, e.getMessage()); - logger.debug("Failed to follow LDAP referral.", e); + logger.warn("Referral to \"{}\" could not be followed: {}", url, e.getMessage(), e); } } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/ConfigurationService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/ConfigurationService.java index 15bd0026c..d0e838c75 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/ConfigurationService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/ConfigurationService.java @@ -122,7 +122,7 @@ public class ConfigurationService { } catch (IOException e) { - logger.error("\"{}\" could not be read/parsed: {}", ldapServers, e.getMessage()); + logger.error("\"{}\" could not be read/parsed: {}", ldapServers, e.getMessage(), e); } } else diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java index 50626ca3b..a40824dd4 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java @@ -202,8 +202,7 @@ public class ConnectionService { } catch (LdapInvalidAttributeValueException e) { logger.error("Invalid value for {} attribute: {}", - LDAP_ATTRIBUTE_NAME_ID, e.getMessage()); - logger.debug("LDAP exception while getting CN attribute.", e); + LDAP_ATTRIBUTE_NAME_ID, e.getMessage(), e); return null; } @@ -223,8 +222,7 @@ public class ConnectionService { config.setProtocol(protocol.getString()); } catch (LdapInvalidAttributeValueException e) { - logger.error("Invalid value of the protocol entry: {}", e.getMessage()); - logger.debug("LDAP exception when getting protocol value.", e); + logger.error("Invalid value of the protocol entry: {}", e.getMessage(), e); return null; } @@ -234,8 +232,7 @@ public class ConnectionService { proxyConfig = getProxyConfiguration(entry); } catch (GuacamoleException e) { - logger.error("Failed to retrieve proxy configuration.", e.getMessage()); - logger.debug("Guacamole Exception when retrieving proxy configuration.", e); + logger.error("Failed to retrieve proxy configuration.", e.getMessage(), e); return null; } @@ -250,8 +247,7 @@ public class ConnectionService { parameter = parameterAttribute.getString(); } catch (LdapInvalidAttributeValueException e) { - logger.warn("Parameter value not valid for {}: {}", cnName, e.getMessage()); - logger.debug("LDAP exception when getting parameter value.", e); + logger.warn("Parameter value not valid for {}: {}", cnName, e.getMessage(), e); return null; } parameterAttribute.remove(parameter); @@ -394,8 +390,7 @@ public class ConnectionService { return new GuacamoleProxyConfiguration(proxyHostname, proxyPort, proxyEncryption); } catch (LdapInvalidAttributeValueException e) { - logger.error("Invalid value in proxy configuration: {}", e.getMessage()); - logger.debug("LDAP exception fetching proxy attribute value.", e); + logger.error("Invalid value in proxy configuration: {}", e.getMessage(), e); throw new GuacamoleServerException("Invalid LDAP value in proxy configuration.", e); } } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/group/UserGroupService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/group/UserGroupService.java index b38fc9198..89049a00b 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/group/UserGroupService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/group/UserGroupService.java @@ -214,9 +214,7 @@ public class UserGroupService { } catch (LdapInvalidAttributeValueException e) { logger.error("User group missing identifier: {}", - e.getMessage()); - logger.debug("LDAP exception while getting " - + "group identifier.", e); + e.getMessage(), e); } } } @@ -280,8 +278,7 @@ public class UserGroupService { } catch (LdapInvalidAttributeValueException e) { logger.error("User group missing identifier: {}", - e.getMessage()); - logger.debug("LDAP exception while getting group identifier.", e); + e.getMessage(), e); } }); diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java index 8568ced7e..23c72911b 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java @@ -95,7 +95,6 @@ public class AuthenticationProviderService { RadiusAttribute stateAttr = challengePacket.findAttribute(Attr_State.TYPE); if (stateAttr == null) { logger.error("Something went wrong, state attribute not present."); - logger.debug("State Attribute turned up null, which shouldn't happen in AccessChallenge."); return null; } @@ -103,7 +102,6 @@ public class AuthenticationProviderService { RadiusAttribute replyAttr = challengePacket.findAttribute(Attr_ReplyMessage.TYPE); if (replyAttr == null) { logger.error("No reply message received from the server."); - logger.debug("Expecting a Attr_ReplyMessage attribute on this packet, and did not get one."); return null; } @@ -162,8 +160,7 @@ public class AuthenticationProviderService { null); } catch (GuacamoleException e) { - logger.error("Cannot configure RADIUS server: {}", e.getMessage()); - logger.debug("Error configuring RADIUS server.", e); + logger.error("Cannot configure RADIUS server: {}", e.getMessage(), e); throw new GuacamoleInvalidCredentialsException("Authentication error.", CredentialsInfo.USERNAME_PASSWORD); } } @@ -184,13 +181,11 @@ public class AuthenticationProviderService { stateBytes); } catch (IllegalArgumentException e) { - logger.warn("Illegal hexadecimal value while parsing RADIUS state string: {}", e.getMessage()); - logger.debug("Encountered exception while attempting to parse the hexidecimal state value.", e); + logger.warn("Illegal hexadecimal value while parsing RADIUS state string: {}", e.getMessage(), e); throw new GuacamoleInvalidCredentialsException("Authentication error.", CredentialsInfo.USERNAME_PASSWORD); } catch (GuacamoleException e) { - logger.error("Cannot configure RADIUS server: {}", e.getMessage()); - logger.debug("Error configuring RADIUS server.", e); + logger.error("Cannot configure RADIUS server: {}", e.getMessage(), e); throw new GuacamoleInvalidCredentialsException("Authentication error.", CredentialsInfo.USERNAME_PASSWORD); } } diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java index 800e451a5..5dad9edd3 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java @@ -245,18 +245,15 @@ public class RadiusConnectionService { } catch (RadiusException e) { - logger.error("Unable to complete authentication.", e.getMessage()); - logger.debug("Authentication with RADIUS failed.", e); + logger.error("Unable to complete authentication: {}", e.getMessage(), e); return null; } catch (NoSuchAlgorithmException e) { - logger.error("No such RADIUS algorithm: {}", e.getMessage()); - logger.debug("Unknown RADIUS algorithm.", e); + logger.error("No such RADIUS algorithm: {}", e.getMessage(), e); return null; } catch (UnknownHostException e) { - logger.error("Could not resolve address: {}", e.getMessage()); - logger.debug("Exception resolving host address.", e); + logger.error("Could not resolve address: {}", e.getMessage(), e); return null; } finally { diff --git a/extensions/guacamole-auth-restrict/src/main/java/org/apache/guacamole/host/HostRestrictionParser.java b/extensions/guacamole-auth-restrict/src/main/java/org/apache/guacamole/host/HostRestrictionParser.java index d368c807a..3e5a14ec7 100644 --- a/extensions/guacamole-auth-restrict/src/main/java/org/apache/guacamole/host/HostRestrictionParser.java +++ b/extensions/guacamole-auth-restrict/src/main/java/org/apache/guacamole/host/HostRestrictionParser.java @@ -64,8 +64,7 @@ public class HostRestrictionParser { addressList.add(hostName); } catch (HostNameException e) { - LOGGER.warn("Invalid host name or IP: {}", host); - LOGGER.debug("HostNameException.", e.getMessage()); + LOGGER.warn("Invalid host name or IP: {}", host, e); } } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/token/TokenValidationService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/token/TokenValidationService.java index 139ab2021..35a515837 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/token/TokenValidationService.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/token/TokenValidationService.java @@ -122,12 +122,10 @@ public class TokenValidationService { } // Log any failures to validate/parse the JWT catch (MalformedClaimException e) { - logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage()); - logger.debug("Malformed claim within received JWT.", e); + logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage(), e); } catch (InvalidJwtException e) { - logger.info("Rejected invalid OpenID token: {}", e.getMessage()); - logger.debug("Invalid JWT received.", e); + logger.info("Rejected invalid OpenID token: {}", e.getMessage(), e); } return null; @@ -160,8 +158,7 @@ public class TokenValidationService { return username; } catch (MalformedClaimException e) { - logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage()); - logger.debug("Malformed claim within received JWT.", e); + logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage(), e); } // Warn if username was not present in token, as it likely means @@ -203,8 +200,7 @@ public class TokenValidationService { return Collections.unmodifiableSet(new HashSet<>(oidcGroups)); } catch (MalformedClaimException e) { - logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage()); - logger.debug("Malformed claim within received JWT.", e); + logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage(), e); } } @@ -262,8 +258,7 @@ public class TokenValidationService { return Collections.unmodifiableMap(tokens); } catch (MalformedClaimException e) { - logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage()); - logger.debug("Malformed claim within received JWT.", e); + logger.info("Rejected OpenID token with malformed claim: {}", e.getMessage(), e); } } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/AssertionConsumerServiceResource.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/AssertionConsumerServiceResource.java index 7aadc73f5..492dc64a6 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/AssertionConsumerServiceResource.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/AssertionConsumerServiceResource.java @@ -125,8 +125,7 @@ public class AssertionConsumerServiceResource extends SSOResource { // If invalid, redirect back to main page to re-attempt authentication catch (GuacamoleException e) { - logger.warn("Authentication attempted with an invalid SAML response: {}", e.getMessage()); - logger.debug("Received SAML response failed validation.", e); + logger.warn("Authentication attempted with an invalid SAML response: {}", e.getMessage(), e); return Response.seeOther(guacBase).build(); } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLClientAuthenticationResource.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLClientAuthenticationResource.java index e9a798466..37977876f 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLClientAuthenticationResource.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLClientAuthenticationResource.java @@ -351,16 +351,16 @@ public class SSLClientAuthenticationResource extends SSOResource { } catch (GuacamoleClientException e) { - logger.warn("SSL/TLS client authentication attempt rejected: {}", e.getMessage()); - logger.debug("SSL/TLS client authentication failed.", e); + logger.warn("SSL/TLS client authentication attempt rejected: {}", + e.getMessage(), e); } catch (GuacamoleException e) { - logger.error("SSL/TLS client authentication attempt could not be processed: {}", e.getMessage()); - logger.debug("SSL/TLS client authentication failed.", e); + logger.error("SSL/TLS client authentication attempt could not be " + + "processed: {}", e.getMessage(), e); } catch (RuntimeException | Error e) { - logger.error("SSL/TLS client authentication attempt failed internally: {}", e.getMessage()); - logger.debug("Internal failure processing SSL/TLS client authentication attempt.", e); + logger.error("SSL/TLS client authentication attempt failed " + + "internally: {}", e.getMessage(), e); } return sessionManager.generateInvalid(); diff --git a/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/auth/totp/user/UserVerificationService.java b/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/auth/totp/user/UserVerificationService.java index 3ebd85b5b..03e482103 100644 --- a/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/auth/totp/user/UserVerificationService.java +++ b/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/auth/totp/user/UserVerificationService.java @@ -128,8 +128,7 @@ public class UserVerificationService { // If key is not valid base32, warn but otherwise pretend the key does // not exist catch (IllegalArgumentException e) { - logger.warn("TOTP key of user \"{}\" is not valid base32.", self.getIdentifier()); - logger.debug("TOTP key is not valid base32.", e); + logger.warn("TOTP key of user \"{}\" is not valid base32.", self.getIdentifier(), e); return null; } @@ -218,9 +217,7 @@ public class UserVerificationService { + "lack permission to update their own account and the " + "TOTP extension was unable to obtain privileged access. " + "TOTP will be disabled for this user.", - self.getIdentifier()); - logger.debug("Permission denied to set TOTP key of user " - + "account.", e); + self.getIdentifier(), e); return false; } catch (GuacamoleUnsupportedException e) { @@ -422,8 +419,7 @@ public class UserVerificationService { } catch (InvalidKeyException e) { - logger.warn("User \"{}\" is associated with an invalid TOTP key.", username); - logger.debug("TOTP key is not valid.", e); + logger.warn("User \"{}\" is associated with an invalid TOTP key.", username, e); } // Provided code is not valid diff --git a/extensions/guacamole-history-recording-storage/src/main/java/org/apache/guacamole/history/connection/HistoryConnectionRecord.java b/extensions/guacamole-history-recording-storage/src/main/java/org/apache/guacamole/history/connection/HistoryConnectionRecord.java index f1c53ff87..91f2ce0e6 100644 --- a/extensions/guacamole-history-recording-storage/src/main/java/org/apache/guacamole/history/connection/HistoryConnectionRecord.java +++ b/extensions/guacamole-history-recording-storage/src/main/java/org/apache/guacamole/history/connection/HistoryConnectionRecord.java @@ -147,8 +147,8 @@ public class HistoryConnectionRecord extends DelegatingConnectionRecord { } catch (IOException e) { logger.warn("Possible session recording \"{}\" could not be " - + "identified as it cannot be read: {}", file, e.getMessage()); - logger.debug("Possible session recording \"{}\" could not be read.", file, e); + + "identified as it cannot be read: {}", + file, e.getMessage(), e); } finally { @@ -161,9 +161,7 @@ public class HistoryConnectionRecord extends DelegatingConnectionRecord { catch (IOException e) { logger.warn("Unexpected error closing recording file \"{}\": {}", - file, e.getMessage()); - logger.debug("Session recording file \"{}\" could not be closed.", - file, e); + file, e.getMessage(), e); } } @@ -297,8 +295,9 @@ public class HistoryConnectionRecord extends DelegatingConnectionRecord { .array()); } catch (MalformedURLException e) { - logger.warn("Ignoring file \"{}\" as a unique URL and UUID for that file could not be generated: {}", e.getMessage()); - logger.debug("URL for file \"{}\" could not be determined.", file, e); + logger.warn("Ignoring file \"{}\" as a unique URL and UUID for " + + "that file could not be generated: {}", + e.getMessage(), e); return; } diff --git a/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/conf/KsmAttributeService.java b/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/conf/KsmAttributeService.java index 8b3c5d938..c1aee2121 100644 --- a/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/conf/KsmAttributeService.java +++ b/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/conf/KsmAttributeService.java @@ -155,15 +155,12 @@ public class KsmAttributeService implements VaultAttributeService { catch (GuacamoleException e) { - logger.warn( - "Unable to determine if KSM user attributes " - + "should be exposed due to config parsing error: {}.", e.getMessage()); - logger.debug( - "Config parsing error prevented checking user attribute configuration", - e); - - // If the configuration can't be parsed, default to not exposing the attributes + // If the configuration can't be parsed, default to not exposing + // the attributes + logger.warn("Unable to determine if KSM user attributes should be " + + "exposed due to config parsing error: {}.", e.getMessage(), e); return Collections.emptyList(); + } } diff --git a/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/secret/KsmClient.java b/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/secret/KsmClient.java index f811e9421..bd412a720 100644 --- a/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/secret/KsmClient.java +++ b/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/secret/KsmClient.java @@ -781,7 +781,7 @@ public class KsmClient { // Show the warning only if there is no fallback function // and this was the last attempt logger.warn("Keeper notation \"{}\" could not be resolved " - + "to a record: {}", notation, e.getMessage()); + + "to a record: {}", notation, e.getMessage(), e); return CompletableFuture.completedFuture(null); } diff --git a/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/user/KsmUser.java b/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/user/KsmUser.java index 9c002eb4d..6c7b6413a 100644 --- a/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/user/KsmUser.java +++ b/extensions/guacamole-vault/modules/guacamole-vault-ksm/src/main/java/org/apache/guacamole/vault/ksm/user/KsmUser.java @@ -87,13 +87,10 @@ import com.google.inject.assistedinject.AssistedInject; boolean userKsmConfigEnabled = false; try { userKsmConfigEnabled = configurationService.getAllowUserConfig(); - } catch (GuacamoleException e) { - - logger.warn( - "Disabling user KSM config due to exception: {}" - , e.getMessage()); - logger.debug("Error looking up if user KSM config is enabled.", e); - + } + catch (GuacamoleException e) { + logger.warn("Disabling user KSM config due to exception: {}", + e.getMessage(), e); } // If user-specific KSM configuration is not enabled, do not expose the @@ -112,4 +109,4 @@ import com.google.inject.assistedinject.AssistedInject; return attributes; } - } \ No newline at end of file + } diff --git a/guacamole-common/src/main/java/org/apache/guacamole/servlet/GuacamoleHTTPTunnelServlet.java b/guacamole-common/src/main/java/org/apache/guacamole/servlet/GuacamoleHTTPTunnelServlet.java index 492076933..e6c1ac3eb 100644 --- a/guacamole-common/src/main/java/org/apache/guacamole/servlet/GuacamoleHTTPTunnelServlet.java +++ b/guacamole-common/src/main/java/org/apache/guacamole/servlet/GuacamoleHTTPTunnelServlet.java @@ -328,13 +328,12 @@ public abstract class GuacamoleHTTPTunnelServlet extends HttpServlet { // Catch any thrown guacamole exception and attempt to pass within the // HTTP response, logging each error appropriately. catch (GuacamoleClientException e) { - logger.warn("HTTP tunnel request rejected: {}", e.getMessage()); + logger.warn("HTTP tunnel request rejected: {}", e.getMessage(), e); sendError(response, e.getStatus().getGuacamoleStatusCode(), e.getStatus().getHttpStatusCode(), e.getMessage()); } catch (GuacamoleException e) { - logger.error("HTTP tunnel request failed: {}", e.getMessage()); - logger.debug("Internal error in HTTP tunnel.", e); + logger.error("HTTP tunnel request failed: {}", e.getMessage(), e); sendError(response, e.getStatus().getGuacamoleStatusCode(), e.getStatus().getHttpStatusCode(), "Internal server error."); } diff --git a/guacamole-common/src/main/java/org/apache/guacamole/websocket/GuacamoleWebSocketTunnelEndpoint.java b/guacamole-common/src/main/java/org/apache/guacamole/websocket/GuacamoleWebSocketTunnelEndpoint.java index 772ce64b2..405e6ed90 100644 --- a/guacamole-common/src/main/java/org/apache/guacamole/websocket/GuacamoleWebSocketTunnelEndpoint.java +++ b/guacamole-common/src/main/java/org/apache/guacamole/websocket/GuacamoleWebSocketTunnelEndpoint.java @@ -205,8 +205,7 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint { } catch (GuacamoleException e) { - logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage()); - logger.debug("Error connecting WebSocket tunnel.", e); + logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage(), e); closeConnection(session, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); return; @@ -265,8 +264,7 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint { // to pass within the WebSocket connection, logging // each error appropriately. catch (GuacamoleClientException e) { - logger.info("WebSocket connection terminated: {}", e.getMessage()); - logger.debug("WebSocket connection terminated due to client error.", e); + logger.info("WebSocket connection terminated: {}", e.getMessage(), e); closeConnection(session, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } @@ -275,8 +273,7 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint { closeConnection(session, GuacamoleStatus.SUCCESS); } catch (GuacamoleException e) { - logger.error("Connection to guacd terminated abnormally: {}", e.getMessage()); - logger.debug("Internal error during connection to guacd.", e); + logger.error("Connection to guacd terminated abnormally: {}", e.getMessage(), e); closeConnection(session, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/environment/DefaultEnvironment.java b/guacamole-ext/src/main/java/org/apache/guacamole/environment/DefaultEnvironment.java index a3db06c19..272a42ee3 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/environment/DefaultEnvironment.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/environment/DefaultEnvironment.java @@ -158,9 +158,8 @@ class DefaultEnvironment extends DelegatingEnvironment { logger.error("Defaulting to case-sensitive handling of " + "usernames and group names as the desired case " + "sensitivity configuration could not be read: {}", - e.getMessage()); + e.getMessage(), e); - logger.debug("Error reading case sensitivity configuration.", e); return CaseSensitivity.ENABLED; } diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java b/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java index bd0f3f152..d323e2bfd 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java @@ -266,8 +266,9 @@ public class LocalEnvironment implements Environment { } catch (IOException e) { - logger.error("Unable to read connection parameter information from \"{}\": {}", file.getAbsolutePath(), e.getMessage()); - logger.debug("Error reading protocol JSON.", e); + logger.error("Unable to read connection parameter " + + "information from \"{}\": {}", + file.getAbsolutePath(), e.getMessage(), e); } } @@ -290,8 +291,9 @@ public class LocalEnvironment implements Environment { protocols.put(protocol, readProtocol(stream)); } catch (IOException e) { - logger.error("Unable to read pre-defined connection parameter information for protocol \"{}\": {}", protocol, e.getMessage()); - logger.debug("Error reading pre-defined protocol JSON.", e); + logger.error("Unable to read pre-defined connection " + + "parameter information for protocol \"{}\": {}", + protocol, e.getMessage(), e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java index d8e3f3d58..aef48592a 100644 --- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java +++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java @@ -166,8 +166,7 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener logger.info("Read configuration parameters from \"{}\".", guacProperties); } catch (GuacamoleException e) { - logger.error("Unable to read guacamole.properties: {}", e.getMessage()); - logger.debug("Error reading guacamole.properties.", e); + logger.error("Unable to read guacamole.properties: {}", e.getMessage(), e); } // For any values not defined in GUACAMOLE_HOME/guacamole.properties, @@ -181,8 +180,7 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener } } catch (GuacamoleException e) { - logger.error("Unable to configure support for environment properties: {}", e.getMessage()); - logger.debug("Error reading \"{}\" property from guacamole.properties.", ENABLE_ENVIRONMENT_PROPERTIES.getName(), e); + logger.error("Unable to configure support for environment properties: {}", e.getMessage(), e); } // For any values not defined in GUACAMOLE_HOME/guacamole.properties @@ -198,8 +196,7 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener } } catch (GuacamoleException e) { - logger.error("Unable to configure support for file environment properties: {}", e.getMessage()); - logger.debug("Error reading \"{}\" property from guacamole.properties.", ENABLE_FILE_ENVIRONMENT_PROPERTIES.getName(), e); + logger.error("Unable to configure support for file environment properties: {}", e.getMessage(), e); } // Now that at least the main guacamole.properties source of @@ -225,8 +222,7 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener }); } catch (GuacamoleException e) { - logger.error("An extension listening for application startup failed: {}", e.getMessage()); - logger.debug("Extension failed internally while handling the application startup event.", e); + logger.error("An extension listening for application startup failed: {}", e.getMessage(), e); } } @@ -307,8 +303,7 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener }); } catch (GuacamoleException e) { - logger.error("An extension listening for application shutdown failed: {}", e.getMessage()); - logger.debug("Extension failed internally while handling the application shutdown event.", e); + logger.error("An extension listening for application shutdown failed: {}", e.getMessage(), e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java index 5bf0371b3..50ee2a13d 100644 --- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java +++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java @@ -320,8 +320,7 @@ public class GuacamoleSession { }); } catch (GuacamoleException e) { - logger.error("An extension listening for session invalidation failed: {}", e.getMessage()); - logger.debug("Extension failed internally while handling the session invalidation event.", e); + logger.error("An extension listening for session invalidation failed: {}", e.getMessage(), e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/SystemFileEnvironmentGuacamoleProperties.java b/guacamole/src/main/java/org/apache/guacamole/SystemFileEnvironmentGuacamoleProperties.java index 8b0825292..440051c65 100644 --- a/guacamole/src/main/java/org/apache/guacamole/SystemFileEnvironmentGuacamoleProperties.java +++ b/guacamole/src/main/java/org/apache/guacamole/SystemFileEnvironmentGuacamoleProperties.java @@ -51,8 +51,8 @@ public class SystemFileEnvironmentGuacamoleProperties implements GuacamoleProper return Files.asCharSource(new File(filename), StandardCharsets.UTF_8).read(); } catch (IOException e) { - logger.error("Property \"{}\" could not be read from file \"{}\": {}", name, filename, e.getMessage()); - logger.debug("Error reading property value from file.", e); + logger.error("Property \"{}\" could not be read from file \"{}\": {}", name, + filename, e.getMessage(), e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java index 3099b3b92..0e24d8534 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java @@ -106,13 +106,13 @@ public class FileAuthenticationProvider extends SimpleAuthenticationProvider { parser = SAXParserFactory.newInstance().newSAXParser(); } catch (ParserConfigurationException e) { - logger.error("Unable to create XML parser for reading \"{}\": {}", USER_MAPPING_FILENAME, e.getMessage()); - logger.debug("An instance of SAXParser could not be created.", e); + logger.error("Unable to create XML parser for reading \"{}\": {}", + USER_MAPPING_FILENAME, e.getMessage(), e); return null; } catch (SAXException e) { - logger.error("Unable to create XML parser for reading \"{}\": {}", USER_MAPPING_FILENAME, e.getMessage()); - logger.debug("An instance of SAXParser could not be created.", e); + logger.error("Unable to create XML parser for reading \"{}\": {}", + USER_MAPPING_FILENAME, e.getMessage(), e); return null; } @@ -138,15 +138,13 @@ public class FileAuthenticationProvider extends SimpleAuthenticationProvider { // If the file is unreadable, return no mapping catch (IOException e) { - logger.warn("Unable to read user mapping file \"{}\": {}", userMappingFile, e.getMessage()); - logger.debug("Error reading user mapping file.", e); + logger.warn("Unable to read user mapping file \"{}\": {}", userMappingFile, e.getMessage(), e); return null; } // If the file cannot be parsed, return no mapping catch (SAXException e) { - logger.warn("User mapping file \"{}\" is not valid: {}", userMappingFile, e.getMessage()); - logger.debug("Error parsing user mapping file.", e); + logger.warn("User mapping file \"{}\" is not valid: {}", userMappingFile, e.getMessage(), e); return null; } diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java b/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java index e2122fdef..e51ea76cf 100644 --- a/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java +++ b/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java @@ -182,15 +182,11 @@ public class AuthenticationProviderFacade implements AuthenticationProvider { * authentication provider being skipped. */ private void warnAuthProviderSkipped(Throwable e) { - logger.warn("The \"{}\" authentication provider has been skipped due " + "to an internal error. If this is unexpected or you are the " + "developer of this authentication provider, you may wish to " + "enable debug-level logging: {}", - getIdentifier(), e.getMessage()); - - logger.debug("Authentication provider skipped due to an internal failure.", e); - + getIdentifier(), e.getMessage(), e); } /** diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java b/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java index c4744e2d9..21adbe81e 100644 --- a/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java +++ b/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java @@ -434,8 +434,9 @@ public class ExtensionModule extends ServletModule { // Use empty set by default if property cannot be parsed catch (GuacamoleException e) { - logger.warn("The list of authentication providers specified via the \"{}\" property could not be parsed: {}", SKIP_IF_UNAVAILABLE.getName(), e.getMessage()); - logger.debug("Unable to parse \"{}\" property.", SKIP_IF_UNAVAILABLE.getName(), e); + logger.warn("The list of authentication providers specified via " + + "the \"{}\" property could not be parsed: {}", + SKIP_IF_UNAVAILABLE.getName(), e.getMessage(), e); return Collections.emptySet(); } @@ -457,8 +458,9 @@ public class ExtensionModule extends ServletModule { // Sort by filename if the desired order cannot be read catch (GuacamoleException e) { - logger.warn("The list of extensions specified via the \"{}\" property could not be parsed: {}", EXTENSION_PRIORITY.getName(), e.getMessage()); - logger.debug("Unable to parse \"{}\" property.", EXTENSION_PRIORITY.getName(), e); + logger.warn("The list of extensions specified via the \"{}\" " + + "property could not be parsed: {}", + EXTENSION_PRIORITY.getName(), e.getMessage(), e); return ExtensionOrderProperty.DEFAULT_COMPARATOR; } @@ -522,8 +524,8 @@ public class ExtensionModule extends ServletModule { } catch (GuacamoleException e) { - logger.error("Extension \"{}\" could not be loaded: {}", extensionFile.getName(), e.getMessage()); - logger.debug("Unable to load extension.", e); + logger.error("Extension \"{}\" could not be loaded: {}", + extensionFile.getName(), e.getMessage(), e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/LanguageResourceService.java b/guacamole/src/main/java/org/apache/guacamole/extension/LanguageResourceService.java index 3cb2acbb9..53e329426 100644 --- a/guacamole/src/main/java/org/apache/guacamole/extension/LanguageResourceService.java +++ b/guacamole/src/main/java/org/apache/guacamole/extension/LanguageResourceService.java @@ -125,8 +125,7 @@ public class LanguageResourceService { // Warn of failure to parse catch (GuacamoleException e) { parsedAllowedLanguages = null; - logger.error("Unable to parse list of allowed languages: {}", e.getMessage()); - logger.debug("Error parsing list of allowed languages.", e); + logger.error("Unable to parse list of allowed languages: {}", e.getMessage(), e); } this.allowedLanguages = parsedAllowedLanguages; @@ -308,8 +307,7 @@ public class LanguageResourceService { } catch (IOException e) { - logger.error("Unable to merge language resource \"{}\": {}", key, e.getMessage()); - logger.debug("Error merging language resource.", e); + logger.error("Unable to merge language resource \"{}\": {}", key, e.getMessage(), e); } } @@ -437,8 +435,7 @@ public class LanguageResourceService { // Continue with next language if unable to read catch (IOException e) { - logger.warn("Unable to read language resource \"{}\".", languageKey); - logger.debug("Error reading language resource.", e); + logger.warn("Unable to read language resource \"{}\".", languageKey, e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/ProviderFactory.java b/guacamole/src/main/java/org/apache/guacamole/extension/ProviderFactory.java index 01fda5719..9eeab14f9 100644 --- a/guacamole/src/main/java/org/apache/guacamole/extension/ProviderFactory.java +++ b/guacamole/src/main/java/org/apache/guacamole/extension/ProviderFactory.java @@ -61,35 +61,29 @@ class ProviderFactory { catch (NoSuchMethodException e) { logger.error("The {} extension in use is not properly defined. " + "Please contact the developers of the extension or, if you " - + "are the developer, turn on debug-level logging.", typeName); - logger.debug("{} is missing a default constructor.", - providerClass.getName(), e); + + "are the developer, turn on debug-level logging.", + typeName, e); } catch (SecurityException e) { logger.error("The Java security manager is preventing extensions " + "from being loaded. Please check the configuration of Java or your " - + "servlet container."); - logger.debug("Creation of {} disallowed by security manager.", - providerClass.getName(), e); + + "servlet container.", e); } catch (InstantiationException e) { logger.error("The {} extension in use is not properly defined. " + "Please contact the developers of the extension or, if you " - + "are the developer, turn on debug-level logging.", typeName); - logger.debug("{} cannot be instantiated.", providerClass.getName(), e); + + "are the developer, turn on debug-level logging.", + typeName, e); } catch (IllegalAccessException e) { logger.error("The {} extension in use is not properly defined. " + "Please contact the developers of the extension or, if you " - + "are the developer, turn on debug-level logging."); - logger.debug("Default constructor of {} is not public.", typeName, e); + + "are the developer, turn on debug-level logging.", e); } catch (IllegalArgumentException e) { logger.error("The {} extension in use is not properly defined. " + "Please contact the developers of the extension or, if you " - + "are the developer, turn on debug-level logging.", typeName); - logger.debug("Default constructor of {} cannot accept zero arguments.", - providerClass.getName(), e); + + "are the developer, turn on debug-level logging.", typeName, e); } catch (InvocationTargetException e) { // Obtain causing error - create relatively-informative stub error if cause is unknown @@ -97,8 +91,7 @@ class ProviderFactory { if (cause == null) cause = new GuacamoleException("Error encountered during initialization."); - logger.error("{} extension failed to start: {}", typeName, cause.getMessage()); - logger.debug("{} instantiation failed.", providerClass.getName(), e); + logger.error("{} extension failed to start: {}", typeName, cause.getMessage(), cause); } return instance; diff --git a/guacamole/src/main/java/org/apache/guacamole/log/LogModule.java b/guacamole/src/main/java/org/apache/guacamole/log/LogModule.java index 9497ec0f4..e3b7d8b23 100644 --- a/guacamole/src/main/java/org/apache/guacamole/log/LogModule.java +++ b/guacamole/src/main/java/org/apache/guacamole/log/LogModule.java @@ -187,7 +187,7 @@ public class LogModule extends AbstractModule { } catch (FileNotFoundException e) { logger.info("Logback configuration could not be read " - + "from \"{}\": {}", logbackFile, e.getMessage()); + + "from \"{}\": {}", logbackFile, e.getMessage(), e); } } @@ -200,7 +200,7 @@ public class LogModule extends AbstractModule { } catch (GuacamoleException e) { level = LogLevel.INFO; - logger.error("Falling back to \"{}\" log level: {}", level.getCanonicalName(), e.getMessage()); + logger.error("Falling back to \"{}\" log level: {}", level.getCanonicalName(), e.getMessage(), e); } return level.getLogbackConfiguration(); @@ -232,12 +232,10 @@ public class LogModule extends AbstractModule { } catch (JoranException e) { - logger.error("Initialization of logback failed: {}", e.getMessage()); - logger.debug("Unable to load logback configuration.", e); + logger.error("Initialization of logback failed: {}", e.getMessage(), e); } catch (IOException e) { - logger.warn("Logback configuration file could not be cleanly closed: {}", e.getMessage()); - logger.debug("Failed to close logback configuration file.", e); + logger.warn("Logback configuration file could not be cleanly closed: {}", e.getMessage(), e); } } diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/RESTExceptionMapper.java b/guacamole/src/main/java/org/apache/guacamole/rest/RESTExceptionMapper.java index ecb99a473..e84510453 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/RESTExceptionMapper.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/RESTExceptionMapper.java @@ -75,7 +75,7 @@ public class RESTExceptionMapper implements ExceptionMapper { if (t instanceof GuacamoleUnauthorizedException) { String token = authenticationService.getAuthenticationToken(request); if (authenticationService.destroyGuacamoleSession(token)) - logger.debug("Implicitly invalidated session for token \"{}\"", token); + logger.debug("Implicitly invalidated session for token \"{}\"", token, t); } // Translate GuacamoleException subclasses to HTTP error codes @@ -84,11 +84,9 @@ public class RESTExceptionMapper implements ExceptionMapper { // Always log the human-readable details of GuacacamoleExceptions // for the benefit of the administrator if (t instanceof GuacamoleClientException) - logger.debug("Client request rejected: {}", t.getMessage()); - else { - logger.error("Request could not be processed: {}", t.getMessage()); - logger.debug("Processing of request aborted by extension.", t); - } + logger.debug("Client request rejected: {}", t.getMessage(), t); + else + logger.error("Request could not be processed: {}", t.getMessage(), t); return Response .status(((GuacamoleException) t).getHttpStatusCode()) @@ -100,13 +98,11 @@ public class RESTExceptionMapper implements ExceptionMapper { // Wrap unchecked exceptions String message = t.getMessage(); if (message != null) - logger.error("Unexpected internal error: {}", message); + logger.error("Unexpected internal error: {}", message, t); else logger.error("An internal error occurred, but did not contain " + "an error message. Enable debug-level logging for " - + "details."); - - logger.debug("Unexpected error in REST endpoint.", t); + + "details.", t); return Response .status(Response.Status.INTERNAL_SERVER_ERROR) diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/auth/AuthenticationService.java b/guacamole/src/main/java/org/apache/guacamole/rest/auth/AuthenticationService.java index 5a0e4c5fe..7037bb789 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/auth/AuthenticationService.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/auth/AuthenticationService.java @@ -433,12 +433,12 @@ public class AuthenticationService { // This line SHOULD be unreachable unless a bug causes // rethrowCause() to not actually rethrow the underlying failure Throwable cause = e.getCause(); - if (cause != null) { - logger.warn("An underlying internal error was not correctly rethrown by rethrowCause(): {}", cause.getMessage()); - logger.debug("Internal error not rethrown by rethrowCause().", cause); - } + if (cause != null) + logger.warn("An underlying internal error was not correctly " + + "rethrown by rethrowCause(): {}", cause.getMessage(), cause); else - logger.warn("An underlying internal error was not correctly rethrown by rethrowCause()."); + logger.warn("An underlying internal error was not correctly " + + "rethrown by rethrowCause()."); throw e.getCauseAsGuacamoleException(); diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/auth/HashTokenSessionMap.java b/guacamole/src/main/java/org/apache/guacamole/rest/auth/HashTokenSessionMap.java index cabbb78ee..745362d21 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/auth/HashTokenSessionMap.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/auth/HashTokenSessionMap.java @@ -81,8 +81,7 @@ public class HashTokenSessionMap implements TokenSessionMap { sessionTimeoutValue = environment.getProperty(API_SESSION_TIMEOUT, 60); } catch (GuacamoleException e) { - logger.error("Unable to read guacamole.properties: {}", e.getMessage()); - logger.debug("Error while reading session timeout value.", e); + logger.error("Unable to read guacamole.properties: {}", e.getMessage(), e); sessionTimeoutValue = 60; } diff --git a/guacamole/src/main/java/org/apache/guacamole/tunnel/InterceptedStreamMap.java b/guacamole/src/main/java/org/apache/guacamole/tunnel/InterceptedStreamMap.java index 6ddfdf976..e06ded01b 100644 --- a/guacamole/src/main/java/org/apache/guacamole/tunnel/InterceptedStreamMap.java +++ b/guacamole/src/main/java/org/apache/guacamole/tunnel/InterceptedStreamMap.java @@ -69,8 +69,7 @@ public class InterceptedStreamMap { stream.close(); } catch (IOException e) { - logger.warn("Unable to close intercepted stream: {}", e.getMessage()); - logger.debug("I/O error prevented closure of intercepted stream.", e); + logger.warn("Unable to close intercepted stream: {}", e.getMessage(), e); } // Notify waiting threads that the stream has ended diff --git a/guacamole/src/main/java/org/apache/guacamole/tunnel/OutputStreamInterceptingFilter.java b/guacamole/src/main/java/org/apache/guacamole/tunnel/OutputStreamInterceptingFilter.java index 99cf1538f..7fab4ff87 100644 --- a/guacamole/src/main/java/org/apache/guacamole/tunnel/OutputStreamInterceptingFilter.java +++ b/guacamole/src/main/java/org/apache/guacamole/tunnel/OutputStreamInterceptingFilter.java @@ -130,8 +130,7 @@ public class OutputStreamInterceptingFilter blob = BaseEncoding.base64().decode(data); } catch (IllegalArgumentException e) { - logger.warn("Received base64 data for intercepted stream was invalid."); - logger.debug("Decoding base64 data for intercepted stream failed.", e); + logger.warn("Received base64 data for intercepted stream was invalid.", e); return null; } diff --git a/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty8/GuacamoleWebSocketTunnelServlet.java b/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty8/GuacamoleWebSocketTunnelServlet.java index 304e1dd95..11e10c873 100644 --- a/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty8/GuacamoleWebSocketTunnelServlet.java +++ b/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty8/GuacamoleWebSocketTunnelServlet.java @@ -240,8 +240,7 @@ public abstract class GuacamoleWebSocketTunnelServlet extends WebSocketServlet { tunnel = doConnect(tunnelRequest); } catch (GuacamoleException e) { - logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage()); - logger.debug("Error connecting WebSocket tunnel.", e); + logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage(), e); closeConnection(connection, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); return; @@ -295,8 +294,7 @@ public abstract class GuacamoleWebSocketTunnelServlet extends WebSocketServlet { // to pass within the WebSocket connection, logging // each error appropriately. catch (GuacamoleClientException e) { - logger.info("WebSocket connection terminated: {}", e.getMessage()); - logger.debug("WebSocket connection terminated due to client error.", e); + logger.info("WebSocket connection terminated: {}", e.getMessage(), e); closeConnection(connection, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } @@ -305,8 +303,7 @@ public abstract class GuacamoleWebSocketTunnelServlet extends WebSocketServlet { closeConnection(connection, GuacamoleStatus.SUCCESS); } catch (GuacamoleException e) { - logger.error("Connection to guacd terminated abnormally: {}", e.getMessage()); - logger.debug("Internal error during connection to guacd.", e); + logger.error("Connection to guacd terminated abnormally: {}", e.getMessage(), e); closeConnection(connection, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } diff --git a/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty9/GuacamoleWebSocketTunnelListener.java b/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty9/GuacamoleWebSocketTunnelListener.java index 6422f5718..7ba42d903 100644 --- a/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty9/GuacamoleWebSocketTunnelListener.java +++ b/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/jetty9/GuacamoleWebSocketTunnelListener.java @@ -196,8 +196,7 @@ public abstract class GuacamoleWebSocketTunnelListener implements WebSocketListe } catch (GuacamoleException e) { - logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage()); - logger.debug("Error connecting WebSocket tunnel.", e); + logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage(), e); closeConnection(session, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); return; } @@ -245,8 +244,7 @@ public abstract class GuacamoleWebSocketTunnelListener implements WebSocketListe // to pass within the WebSocket connection, logging // each error appropriately. catch (GuacamoleClientException e) { - logger.info("WebSocket connection terminated: {}", e.getMessage()); - logger.debug("WebSocket connection terminated due to client error.", e); + logger.info("WebSocket connection terminated: {}", e.getMessage(), e); closeConnection(session, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } @@ -255,8 +253,7 @@ public abstract class GuacamoleWebSocketTunnelListener implements WebSocketListe closeConnection(session, GuacamoleStatus.SUCCESS); } catch (GuacamoleException e) { - logger.error("Connection to guacd terminated abnormally: {}", e.getMessage()); - logger.debug("Internal error during connection to guacd.", e); + logger.error("Connection to guacd terminated abnormally: {}", e.getMessage(), e); closeConnection(session, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } diff --git a/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/tomcat/GuacamoleWebSocketTunnelServlet.java b/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/tomcat/GuacamoleWebSocketTunnelServlet.java index 215cc8f05..25e8059ee 100644 --- a/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/tomcat/GuacamoleWebSocketTunnelServlet.java +++ b/guacamole/src/main/java/org/apache/guacamole/tunnel/websocket/tomcat/GuacamoleWebSocketTunnelServlet.java @@ -268,8 +268,7 @@ public abstract class GuacamoleWebSocketTunnelServlet extends WebSocketServlet { tunnel = doConnect(tunnelRequest); } catch (GuacamoleException e) { - logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage()); - logger.debug("Error connecting WebSocket tunnel.", e); + logger.error("Creation of WebSocket tunnel to guacd failed: {}", e.getMessage(), e); closeConnection(outbound, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); return; @@ -323,8 +322,7 @@ public abstract class GuacamoleWebSocketTunnelServlet extends WebSocketServlet { // to pass within the WebSocket connection, logging // each error appropriately. catch (GuacamoleClientException e) { - logger.info("WebSocket connection terminated: {}", e.getMessage()); - logger.debug("WebSocket connection terminated due to client error.", e); + logger.info("WebSocket connection terminated: {}", e.getMessage(), e); closeConnection(outbound, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); } @@ -333,8 +331,7 @@ public abstract class GuacamoleWebSocketTunnelServlet extends WebSocketServlet { closeConnection(outbound, GuacamoleStatus.SUCCESS); } catch (GuacamoleException e) { - logger.error("Connection to guacd terminated abnormally: {}", e.getMessage()); - logger.debug("Internal error during connection to guacd.", e); + logger.error("Connection to guacd terminated abnormally: {}", e.getMessage(), e); closeConnection(outbound, e.getStatus().getGuacamoleStatusCode(), e.getWebSocketCode()); }