File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.utl.log4j;
import net.sf.log4jdbc.Slf4jSpyLogDelegator;
import net.sf.log4jdbc.Spy;
import net.sf.log4jdbc.tools.LoggingType;
public class Log4JdbcCustomFormatter extends Slf4jSpyLogDelegator {
private LoggingType loggingType = LoggingType.DISABLED;
private String margin = "";
private String sqlPrefix = "SQL:";
public int getMargin() {
return margin.length();
}
public void setMargin(int n) {
margin = String.format("%1$" + n + "s", "");
}
public Log4JdbcCustomFormatter() {
}
@Override
public String sqlOccured(Spy spy, String methodCall, String rawSql) {
if (loggingType == LoggingType.DISABLED) {
return "";
}
if (loggingType != LoggingType.MULTI_LINE) {
rawSql = rawSql.replaceAll("\r", "");
rawSql = rawSql.replaceAll("\n", "");
}
rawSql = rawSql.trim();
rawSql = rawSql.replaceAll("\\s+", " ");
final String fromClause = "\n FROM ";
String sql = rawSql;
if (loggingType == LoggingType.MULTI_LINE) {
final String whereClause = " WHERE ";
final String andClause = " AND ";
final String orderByClause = " ORDER BY ";
final String groupByClause = " GROUP BY ";
final String subSelectClauseS = "\n \\(SELECT";
final String subSelectClauseR = "\n (SELECT";
sql = sql.replaceAll("(?i)" + fromClause, "\n " + margin + fromClause);
sql = sql.replaceAll("(?i)" + whereClause, "\n" + margin + whereClause);
sql = sql.replaceAll("(?i)" + andClause, "\n " + margin + andClause);
sql = sql.replaceAll("(?i)" + orderByClause, "\n" + margin + orderByClause);
sql = sql.replaceAll("(?i)" + groupByClause, "\n" + margin + groupByClause);
sql = sql.replaceAll("(?i)" + subSelectClauseS, "\n " + margin + subSelectClauseR);
}
if (loggingType == LoggingType.SINGLE_LINE_TWO_COLUMNS) {
if (sql.startsWith("select")) {
String from = sql.substring(sql.indexOf(fromClause) + fromClause.length());
sql = from + "\t" + sql;
}
}
getSqlOnlyLogger().info(sqlPrefix + "\n" + margin + sql +"\n");
return sql;
}
@Override
public String sqlOccured(Spy spy, String methodCall, String[] sqls) {
String s = "";
for (int i = 0; i < sqls.length; i++) {
s += sqlOccured(spy, methodCall, sqls[i]) + String.format("%n");
}
return s;
}
public LoggingType getLoggingType() {
return loggingType;
}
public void setLoggingType(LoggingType loggingType) {
this.loggingType = loggingType;
}
public String getSqlPrefix() {
return sqlPrefix;
}
public void setSqlPrefix(String sqlPrefix) {
this.sqlPrefix = sqlPrefix;
}
}