package jef.database.support; import java.io.File; import jef.database.ORMConfig; import jef.database.dialect.type.BlobStringMapping; import jef.tools.StringUtils; public abstract class LogFormat { /** * 记录日志 * * @param n * @param fieldName * @param value */ public abstract void log(StringBuilder logMessage, int count, String fieldName, Object value); public static class NowrapLineLogFormat extends LogFormat { public void log(StringBuilder logMessage, int count, String fieldName, Object value) { if(count==1){ logMessage.append(" ["); }else{ logMessage.append(" "); } logMessage.append('(').append(count).append(')'); if (value == null) { logMessage.append("null"); } else if (value.getClass() == byte[].class) { logMessage.append(((byte[]) value).length).append(" bytes"); } else { String valStr = String.valueOf(value); if (valStr.length() > 40) {// 如果日志太长是不行的 logMessage.append(valStr.substring(0, 38)).append(".."); if (ORMConfig.getInstance().isShowStringLength()) { logMessage.append(" len=").append(BlobStringMapping.getLength(valStr)); } else { logMessage.append(" len=").append(valStr.length()); } } else { logMessage.append(valStr); } } } } public static class Default extends LogFormat { public void log(StringBuilder logMessage, int count, String fieldName, Object value) { int start = logMessage.length(); logMessage.append('\n'); logMessage.append('(').append(count).append(')'); logMessage.append(fieldName).append(':'); start = logMessage.length() - start; if (start < 18) { StringUtils.repeat(logMessage, ' ', 18 - start); } if (value == null) { logMessage.append("\tnull"); return; } Class<?> vClass=value.getClass(); if (vClass == byte[].class) { logMessage.append("\t").append(((byte[]) value).length).append(" bytes"); } else if (vClass== File.class) { logMessage.append("\t").append(String.valueOf(value)).append('(').append(((File) value).length()).append(" bytes)"); } else { String valStr = String.valueOf(value); if (valStr.length() > 40) {// 如果日志太长是不行的 logMessage.append("\t[").append(valStr.substring(0, 38)).append("..]"); if (ORMConfig.getInstance().isShowStringLength()) { logMessage.append(" Length=").append(BlobStringMapping.getLength(valStr)); } else { logMessage.append(" chars=").append(valStr.length()); } } else { logMessage.append("\t[").append(valStr).append(']'); } } } } }