public void endLog() {
        if (doLog || forceLog) {
            hasLogged = true;
            final String logMsg = this.contextString + "END (" + (System.currentTimeMillis() - startTime) + "ms)" + message +
                    (this.exception == null ? "" : "EXC:" + exception.getClass().getName() + "[" + exception.getMessage() + "]");
            if (this.exception == null) {
                if (this.forceLog) {
                    Log.iForce(logMsg);
                } else {
                    Log.log(logLevel, logMsg);
                }
            } else {
                if (this.forceLog) {
                    Log.w(logMsg, this.exception);
                } else {
                    Log.log(logLevel, logMsg, this.exception);
                }
            }
        }
    }
Helper class to construct log messages. Optimized to log what is happening in a method,
but can be used in other situations as well.
<br>
All logging is done on level given in constructor, default is VERBOSE level.
main/src/main/java/cgeo/geocaching/utils/ContextLogger.java