private String getCallerInformation() {
		Throwable throwable = new Throwable();

		// First, for a quick filter, ignore any logging API packaging
		StackTraceElement[] trace = throwable.getStackTrace();
		trace = ReflectionUtilities.movePastStackTracePattern(trace, LOGGER_PACKAGE);
		throwable.setStackTrace(trace);

		// Get the full string for easy string checking; must be synchronized, since the logger
		// is used by multiple threads
		String stackString = null;
		synchronized (stringWriter) {
			throwable.printStackTrace(printWriter);
			stackString = stringWriter.toString();
			stringWriter.getBuffer().setLength(0); // reset
		}

		//
		// Don't print out locations for stack traces, as they already have that info		
		//
		if (stackString.indexOf(PRINT_STACK_TRACE_METHOD_NAME) >= 0) {
			return EMPTY_STRING;
		}

		// 
		// Alter how we find our desired source (depending upon whether we have a messaging service)
		// 
		String cutoffName = getHighestLevelMethodNameToIgnore(stackString);
		return getLogMessageCallerInformation(trace, cutoffName);
	}
Appends the desired hyperlink to the existing event message.

@param event the current log event
@param toAppendTo the string to append to
Ghidra/Framework/Generic/src/main/java/log/Log4jDevelopmentPatternConverter.java