En mi clase de excepción personalizada hemos anulado toString()
:Invalidar Logback salida de error
@Override
public String toString() {
final String msg = getLocalizedMessage();
// base
String str = getClass().getName() + ": [" + code + "]";
// message
if (msg != null)
str += " " + msg;
// extra
if (extra != null) {
str += '\n' + extra.toString();
}
return str;
}
(sí, soy consciente de que debo usar StringBuilder
allí)
Sin embargo, cuando registro tal excepción (a través de org.slf4j.Logger.warn(String msg, Throwable err)
) la salida es la de vainilla excepciones:
webersg.util.service.ServiceError: null
at webersg.util.service.ServiceTools.decodeException(ServiceTools.java:39) ~[bin/:na]
at tr.silvercar.rummikub.robot.LobbyConnection.sendRequestTo(LobbyConnection.java:143) ~[bin/:na]
at tr.silvercar.rummikub.robot.LobbyConnection.sendRequest(LobbyConnection.java:98) ~[bin/:na]
at tr.silvercar.rummikub.robot.Robot.<init>(Robot.java:32) ~[bin/:na]
at tr.silvercar.rummikub.robot.RobotController.start(RobotController.java:81) ~[bin/:na]
at tr.silvercar.rummikub.robot.runners.LocalAltinRobot.main(LocalSilverRobot.java:132) [bin/:na]
¿Cómo puedo conseguir que aparezcan mis datos adicionales? Mi implementación de registro es Logback.
Debe extenderse desde ThrowableHandlingConverter (en lugar de que se extiende desde ClassicConverter) excepción de costumbre. Entonces tampoco necesitas el hack% nopex. Y, en caso de que quiera imprimir el seguimiento de la pila,% myCon debería ir después de% n. –