@Override public ThreadContext.ContextStack convertToEntityAttribute(final String s) { if (Strings.isEmpty(s)) { return null; } List<String> list; try { list = ContextMapJsonAttributeConverter.OBJECT_MAPPER.readValue(s, new TypeReference<List<String>>() { }); } catch (final IOException e) { throw new PersistenceException("Failed to convert JSON string to list for stack.", e); } final DefaultThreadContextStack result = new DefaultThreadContextStack(true); result.addAll(list); return result; }
/** * <em>Consider private, used for testing.</em> */ static void init() { ThreadContextMapFactory.init(); contextMap = null; final PropertiesUtil managerProps = PropertiesUtil.getProperties(); disableAll = managerProps.getBooleanProperty(DISABLE_ALL); useStack = !(managerProps.getBooleanProperty(DISABLE_STACK) || disableAll); useMap = !(managerProps.getBooleanProperty(DISABLE_MAP) || disableAll); contextStack = new DefaultThreadContextStack(useStack); if (!useMap) { contextMap = new NoOpThreadContextMap(); } else { contextMap = ThreadContextMapFactory.createThreadContextMap(); } if (contextMap instanceof ReadOnlyThreadContextMap) { readOnlyContextMap = (ReadOnlyThreadContextMap) contextMap; } else { readOnlyContextMap = null; } }
/** * @return a log event that uses all the bells and whistles, features, nooks and crannies */ static Log4jLogEvent createLogEvent() { final Marker cMarker = MarkerManager.getMarker("Marker1"); final Marker pMarker1 = MarkerManager.getMarker("ParentMarker1"); final Marker pMarker2 = MarkerManager.getMarker("ParentMarker2"); final Marker gfMarker = MarkerManager.getMarker("GrandFatherMarker"); final Marker gmMarker = MarkerManager.getMarker("GrandMotherMarker"); cMarker.addParents(pMarker1); cMarker.addParents(pMarker2); pMarker1.addParents(gmMarker); pMarker1.addParents(gfMarker); final Exception sourceHelper = new Exception(); sourceHelper.fillInStackTrace(); final Exception cause = new NullPointerException("testNPEx"); sourceHelper.fillInStackTrace(); final StackTraceElement source = sourceHelper.getStackTrace()[0]; final IOException ioException = new IOException("testIOEx", cause); ioException.addSuppressed(new IndexOutOfBoundsException("I am suppressed exception 1")); ioException.addSuppressed(new IndexOutOfBoundsException("I am suppressed exception 2")); final ThrowableProxy throwableProxy = new ThrowableProxy(ioException); final Map<String, String> contextMap = new HashMap<>(); contextMap.put("MDC.A", "A_Value"); contextMap.put("MDC.B", "B_Value"); final DefaultThreadContextStack contextStack = new DefaultThreadContextStack(true); contextStack.clear(); contextStack.push("stack_msg1"); contextStack.add("stack_msg2"); final Log4jLogEvent expected = Log4jLogEvent.newBuilder() // .setLoggerName("a.B") // .setMarker(cMarker) // .setLoggerFqcn("f.q.c.n") // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("Msg")) // .setThrown(ioException) // .setThrownProxy(throwableProxy) // .setContextMap(contextMap) // .setContextStack(contextStack) // .setThreadName("MyThreadName") // .setSource(source) // .setTimeMillis(1).build(); // validate event? return expected; }
/** * @return a log event that uses all the bells and whistles, features, nooks and crannies */ static Log4jLogEvent createLogEvent() { final Marker cMarker = MarkerManager.getMarker("Marker1"); final Marker pMarker1 = MarkerManager.getMarker("ParentMarker1"); final Marker pMarker2 = MarkerManager.getMarker("ParentMarker2"); final Marker gfMarker = MarkerManager.getMarker("GrandFatherMarker"); final Marker gmMarker = MarkerManager.getMarker("GrandMotherMarker"); cMarker.addParents(pMarker1); cMarker.addParents(pMarker2); pMarker1.addParents(gmMarker); pMarker1.addParents(gfMarker); final Exception sourceHelper = new Exception(); sourceHelper.fillInStackTrace(); final Exception cause = new NullPointerException("testNPEx"); sourceHelper.fillInStackTrace(); final StackTraceElement source = sourceHelper.getStackTrace()[0]; final IOException ioException = new IOException("testIOEx", cause); ioException.addSuppressed(new IndexOutOfBoundsException("I am suppressed exception 1")); ioException.addSuppressed(new IndexOutOfBoundsException("I am suppressed exception 2")); final ThrowableProxy throwableProxy = new ThrowableProxy(ioException); final StringMap contextData = ContextDataFactory.createContextData(); contextData.putValue("MDC.A", "A_Value"); contextData.putValue("MDC.B", "B_Value"); final DefaultThreadContextStack contextStack = new DefaultThreadContextStack(true); contextStack.clear(); contextStack.push("stack_msg1"); contextStack.add("stack_msg2"); final Log4jLogEvent expected = Log4jLogEvent.newBuilder() // .setLoggerName("a.B") // .setMarker(cMarker) // .setLoggerFqcn("f.q.c.n") // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("Msg")) // .setThrown(ioException) // .setThrownProxy(throwableProxy) // .setContextData(contextData) // .setContextStack(contextStack) // .setThreadName("MyThreadName") // .setSource(source) // .setTimeMillis(1).build(); // validate event? return expected; }