Update of /var/cvs/src/org/mmbase/storage/implementation/database
In directory james.mmbase.org:/tmp/cvs-serv2476
Modified Files:
DatabaseStorageManagerFactory.java
Log Message:
fixed a bug with data paths. And added also 'trace' logging.
See also:
http://cvs.mmbase.org/viewcvs/src/org/mmbase/storage/implementation/database
Index: DatabaseStorageManagerFactory.java
===================================================================
RCS file:
/var/cvs/src/org/mmbase/storage/implementation/database/DatabaseStorageManagerFactory.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- DatabaseStorageManagerFactory.java 17 Feb 2009 23:09:51 -0000 1.57
+++ DatabaseStorageManagerFactory.java 6 Mar 2009 22:10:05 -0000 1.58
@@ -10,7 +10,7 @@
package org.mmbase.storage.implementation.database;
import java.sql.*;
-import java.util.StringTokenizer;
+import java.util.*;
import javax.sql.DataSource;
@@ -42,7 +42,7 @@
*
* @author Pierre van Rooden
* @since MMBase-1.7
- * @version $Id: DatabaseStorageManagerFactory.java,v 1.57 2009/02/17 23:09:51
michiel Exp $
+ * @version $Id: DatabaseStorageManagerFactory.java,v 1.58 2009/03/06 22:10:05
michiel Exp $
*/
public class DatabaseStorageManagerFactory extends
StorageManagerFactory<DatabaseStorageManager> {
@@ -106,24 +106,24 @@
/**
* @since MMBase-1.9.1
*/
- static long MS = 1000000; // 1 ms in ns
+ static final long MS = 1000000; // 1 ms in ns
private long debugDuration = 50 * MS;
private long serviceDuration = 100 * MS;
private long infoDuration = 500 * MS;
private long warnDuration = 2000 * MS;
private long errorDuration = 5000 * MS;
private long fatalDuration = 1000000 * MS;
- private String durationFormat = "#.#";
+ private String durationFormat = "0.00";
final UtilReader.PropertiesMap<String> utilProperties = new
UtilReader("querylogging.xml",
new Runnable() {public void run() {readDurations(); }}).getProperties();
private void readDurations() {
debugDuration = new
Float(Float.parseFloat(utilProperties.getProperty("debug", "" +
debugDuration)) * MS).longValue();
- serviceDuration = new
Float(Float.parseFloat(utilProperties.getProperty("service", "" +
debugDuration)) * MS).longValue();
- infoDuration = new
Float(Float.parseFloat(utilProperties.getProperty("info", "" +
debugDuration)) * MS).longValue();
- warnDuration = new
Float(Float.parseFloat(utilProperties.getProperty("warn", "" +
debugDuration)) * MS).longValue();
- errorDuration = new
Float(Float.parseFloat(utilProperties.getProperty("error", "" +
debugDuration)) * MS).longValue();
- fatalDuration = new
Float(Float.parseFloat(utilProperties.getProperty("fatal", "" +
debugDuration)) * MS).longValue();
+ serviceDuration = new
Float(Float.parseFloat(utilProperties.getProperty("service", "" +
serviceDuration)) * MS).longValue();
+ infoDuration = new
Float(Float.parseFloat(utilProperties.getProperty("info", "" +
infoDuration)) * MS).longValue();
+ warnDuration = new
Float(Float.parseFloat(utilProperties.getProperty("warn", "" +
warnDuration)) * MS).longValue();
+ errorDuration = new
Float(Float.parseFloat(utilProperties.getProperty("error", "" +
errorDuration)) * MS).longValue();
+ fatalDuration = new
Float(Float.parseFloat(utilProperties.getProperty("fatal", "" +
fatalDuration)) * MS).longValue();
durationFormat = utilProperties.getProperty("durationFormat",
durationFormat);
}
@@ -394,9 +394,8 @@
basePath = mmbase.getDataDir();
} else {
MessageFormat mf = new MessageFormat(path);
-
- java.io.File baseFile = new java.io.File(mf.format(new
String[] {mmbase.getDataDir().toString()}));
- if (! baseFile.isAbsolute()) {
+ basePath = new java.io.File(mf.format(new String[]
{mmbase.getDataDir().toString()}));
+ if (! basePath.isAbsolute()) {
ServletContext sc = MMBaseContext.getServletContext();
String absolute = sc != null ? sc.getRealPath("/") +
File.separator : null;
if (absolute == null) absolute =
System.getProperty("user.dir") + File.separator;
@@ -499,34 +498,66 @@
return Logging.getLoggerInstance("org.mmbase.QUERIES." + sql.split("
", 2)[0].toUpperCase());
}
+ private Logger getStackTraceLogger(String sql) {
+ return Logging.getLoggerInstance("org.mmbase.STACK.QUERIES." +
sql.split(" ", 2)[0].toUpperCase());
+ }
+
private long count = 0;
+ protected Throwable getTraceException() {
+ Throwable ex = new Throwable();
+ List<StackTraceElement> result = new ArrayList<StackTraceElement>();
+ for (StackTraceElement el : ex.getStackTrace()) {
+ if (el.getClassName().startsWith("org.mmbase.") &&
+ (!
el.getClassName().startsWith("org.mmbase.storage.implementation.database"))) {
+ result.add(el);
+ }
+ }
+
+ ex.setStackTrace(result.toArray(new StackTraceElement[result.size()]));
+ return ex;
+ }
+
/**
* @since MMBase-1.9.1
*/
protected void logQuery(String query, long duration) {
count++;
Logger qlog = getLogger(query);
+ Logger slog = getStackTraceLogger(query);
if (duration < debugDuration) {
if (qlog.isTraceEnabled()) {
qlog.trace(getLogSqlMessage(query, count, duration));
}
+ if (slog.isTraceEnabled()) {
+ slog.trace("trace for #" + count, getTraceException());
+ }
} else if (duration < serviceDuration) {
if (qlog.isDebugEnabled()) {
qlog.debug(getLogSqlMessage(query, count, duration));
}
+ if (slog.isDebugEnabled()) {
+ slog.debug("trace for #" + count, getTraceException());
+ }
} else if (duration < infoDuration) {
if (qlog.isServiceEnabled()) {
qlog.service(getLogSqlMessage(query, count, duration));
}
+ if (slog.isServiceEnabled()) {
+ slog.service("trace for #" + count, getTraceException());
+ }
} else if (duration < warnDuration) {
qlog.info(getLogSqlMessage(query, count, duration));
+ slog.info("trace for #" + count, getTraceException());
} else if (duration < errorDuration) {
qlog.warn(getLogSqlMessage(query, count, duration));
+ slog.warn("trace for #" + count, getTraceException());
} else if (duration < fatalDuration) {
qlog.error(getLogSqlMessage(query, count, duration));
+ slog.error("trace for #" + count, getTraceException());
} else {
qlog.fatal(getLogSqlMessage(query, count, duration));
+ slog.fatal("trace for #" + count, getTraceException());
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs