/** * Escapes control characters in a string. * * @param value string to escape * @return escaped version * @see #sanitize(String) */ public static String escapeControlChars(String value) { return sanitize(value, false); }
/** * Clean control characters in a string. * * @param value string to escape * @return escaped version */ public static String cleanControlChars(String value) { return sanitize(value, true); }
/** * Escapes control characters in a string. * * @param value string to escape * @return escaped version * @see #escapeControlChars(String) */ public static String sanitize(String value) { return sanitize(value, false); }
public static String sanitize(String value, boolean clean) { return sanitize(value, clean, null); }
private static String getJson(String query, Object[] params, long time, boolean cacheHit) { return "{\"sql\":\"" + JsonHelper.sanitize(query) + "\",\"params\":[" + getParamsJson(params) + "]" + (!cacheHit ? (",\"duration_millis\":" + time ): "" ) + ",\"cache\":" + (cacheHit ? "\"hit\"" : "\"miss\"") + "}"; }
private static String getParamsJson(Object[] params){ StringBuilder paramsSB = new StringBuilder(""); if (params != null) { for (int i = 0; i < params.length; i++) { if(params[i] instanceof Number){ paramsSB.append(JsonHelper.sanitize(params[i].toString())); }else if(params[i] instanceof byte[]){ paramsSB.append("\"bytes[...]\""); }else { if(params[i] == null){ paramsSB.append("null"); }else { paramsSB.append("\"").append(JsonHelper.sanitize(params[i].toString())).append("\""); } } if(i != (params.length - 1)){ paramsSB.append(","); } } } return paramsSB.toString(); }
} else { sb.append('"'); sb.append(JsonHelper.sanitize(Convert.toString(attribute))); sb.append('"');
@Override public String format(LoggingEvent loggingEvent) { String loggerName = loggingEvent.getLoggerName(); String level = loggingEvent.getLevel().toString(); String message = loggingEvent.getMessage().toString().trim(); if(!message.startsWith("{") && !message.startsWith("[")){ message = "\"" + message + "\""; } String threadName = loggingEvent.getThreadName(); Date timeStamp = new Date(loggingEvent.getTimeStamp()); String context = Context.toJSON(); ThrowableInformation throwableInformation = loggingEvent.getThrowableInformation(); String exception = ""; if(throwableInformation != null){ exception = ",\"exception\":{\"message\":\""; Throwable throwable = throwableInformation.getThrowable(); String exceptionMessage = throwable.getMessage() != null? throwable.getMessage(): ""; //need to be careful here, sanitizing, since the message may already contain a chunk of JSON, so escaping or cleaning double quotes is not prudent:) exception += sanitize(exceptionMessage, false, '\n', '\t', '\r') + "\",\"stacktrace\":\"" + escapeControlChars(Util.getStackTraceString(throwable)) + "\"}"; } String contextJson = context != null ? ",\"context\":" + context : ""; String timestampString = this.simpleDateFormat == null ? timeStamp.toString() : simpleDateFormat.format(timeStamp); return "{\"level\":\"" + level + "\",\"timestamp\":\"" + timestampString + "\",\"thread\":\"" + threadName + "\",\"logger\":\"" + loggerName + "\",\"message\":" + message + contextJson + exception + "}" + System.getProperty("line.separator"); }
/** * Clean control characters in a string. * * @param value string to escape * @return escaped version */ public static String cleanControlChars(String value) { return sanitize(value, true); }
/** * Escapes control characters in a string. * * @param value string to escape * @return escaped version * @see #sanitize(String) */ public static String escapeControlChars(String value) { return sanitize(value, false); }
/** * Escapes control characters in a string. * * @param value string to escape * @return escaped version * @see #escapeControlChars(String) */ public static String sanitize(String value) { return sanitize(value, false); }
public static String sanitize(String value, boolean clean) { return sanitize(value, clean, null); }
private static String getParamsJson(Object[] params){ StringBuilder paramsSB = new StringBuilder(""); if (params != null) { for (int i = 0; i < params.length; i++) { if(params[i] instanceof Number){ paramsSB.append(JsonHelper.sanitize(params[i].toString())); }else if(params[i] instanceof byte[]){ paramsSB.append("\"bytes[...]\""); }else { if(params[i] == null){ paramsSB.append("null"); }else { paramsSB.append("\"").append(JsonHelper.sanitize(params[i].toString())).append("\""); } } if(i != (params.length - 1)){ paramsSB.append(","); } } } return paramsSB.toString(); }
private void addRequestHeaders(Map<String, Object> log) { List<String> logHeaders = Configuration.getLogHeaders(); Enumeration<String> requestHeaders = RequestContext.getHttpRequest().getHeaderNames(); Map<String, String> headersMap = null; while (requestHeaders.hasMoreElements()) { String header = requestHeaders.nextElement(); if(logHeaders.contains(header)){ if(headersMap == null){ headersMap = new HashMap<>(); log.put("headers", headersMap); } headersMap.put(header, JsonHelper.sanitize(RequestContext.getHttpRequest().getHeader(header))); } } }
} else { sb.append('"'); sb.append(JsonHelper.sanitize(Convert.toString(attribute))); sb.append('"');
@Override public String format(LoggingEvent loggingEvent) { String loggerName = loggingEvent.getLoggerName(); String level = loggingEvent.getLevel().toString(); String message = loggingEvent.getMessage().toString().trim(); if(!message.startsWith("{") && !message.startsWith("[")){ message = "\"" + message + "\""; } String threadName = loggingEvent.getThreadName(); Date timeStamp = new Date(loggingEvent.getTimeStamp()); String context = Context.toJSON(); ThrowableInformation throwableInformation = loggingEvent.getThrowableInformation(); String exception = ""; if(throwableInformation != null){ exception = ",\"exception\":{\"message\":\""; Throwable throwable = throwableInformation.getThrowable(); String exceptionMessage = throwable.getMessage() != null? throwable.getMessage(): ""; //need to be careful here, sanitizing, since the message may already contain a chunk of JSON, so escaping or cleaning double quotes is not prudent:) exception += sanitize(exceptionMessage, false, '\n', '\t', '\r') + "\",\"stacktrace\":\"" + escapeControlChars(Util.getStackTraceString(throwable)) + "\"}"; } String contextJson = context != null ? ",\"context\":" + context : ""; String timestampString = this.simpleDateFormat == null ? timeStamp.toString() : simpleDateFormat.format(timeStamp); return "{\"level\":\"" + level + "\",\"timestamp\":\"" + timestampString + "\",\"thread\":\"" + threadName + "\",\"logger\":\"" + loggerName + "\",\"message\":" + message + contextJson + exception + "}" + System.getProperty("line.separator"); }
log.put("error", JsonHelper.sanitize(throwable.getMessage() != null ? throwable.getMessage() : throwable.toString()));
private static String getJson(String query, Object[] params, long time, boolean cacheHit) { if (Registry.instance().getConfiguration().collectStatistics() && !cacheHit) { Registry.instance().getStatisticsQueue().enqueue(new QueryExecutionEvent(query, time)); } return "{\"sql\":\"" + JsonHelper.sanitize(query) + "\",\"params\":[" + getParamsJson(params) + "]" + (!cacheHit ? (",\"duration_millis\":" + time ): "" ) + ",\"cache\":" + (cacheHit ? "\"hit\"" : "\"miss\"") + "}"; }