private static void debugInfo() {
		String cv = "kFold: " + cf.getInt("num.kfold")
				+ (cf.isOn("is.parallel.folds") ? " [Parallel]" : " [Singleton]");

		float ratio = (float) cf.getDouble("val.ratio");
		int givenN = cf.getInt("num.given.n");
		float givenRatio = cf.getFloat("val.given.ratio");

		String cvInfo = cf.isOn("is.cross.validation") ? cv : (ratio > 0 ? "ratio: " + ratio : "given: "
				+ (givenN > 0 ? givenN : givenRatio));

		String testPath = cf.getPath("dataset.testing");
		boolean isTestingFlie = !testPath.equals("-1");
		String mode = isTestingFlie ? String.format("Testing:: %s.", Strings.last(testPath, 38)) : cvInfo;

		if (!Recommender.isRankingPred) {
			String view = cf.getString("rating.pred.view");
			switch (view.toLowerCase()) {
			case "cold-start":
				mode += ", " + view;
				break;
			case "trust-degree":
				mode += String.format(", %s [%d, %d]",
						new Object[] { view, cf.getInt("min.trust.degree"), cf.getInt("max.trust.degree") });
				break;
			case "all":
			default:
				break;
			}
		}
		String debugInfo = String.format("Training: %s, %s", Strings.last(cf.getPath("dataset.training"), 38), mode);
		Logs.info(debugInfo);
	}