private static void outputWithoutNotMutedAssertion(String text,
			Logger logger) {

		if (text.length() > maximumRepresentationCharacters) {

			text = text.substring(0, maximumRepresentationCharacters);
			text = text + "...";

		}

		if (writeToStandardOutput) {

			String time = DATE_FORMAT.format(new GregorianCalendar().getTime());

			int stackIndex = 3;

			if (logger == null) {

				stackIndex = 4;

			}

			StackTraceElement element = Thread.currentThread().getStackTrace()[stackIndex];

			String clazz = element.getClassName();
			String method = element.getMethodName();
			int line = element.getLineNumber();

			System.out.print(time);
			System.out.print(" ");
			System.out.print(clazz);
			System.out.print(".");
			System.out.print(method);
			System.out.print(".");
			System.out.print(line);
			System.out.print(": ");
			System.out.print(text);

			System.out.println();

		}

		if (logger == null) {

			logger = Canary.logger;

		}

		if (writeToApplicationLogs) {

			if (logLevel == Level.DEBUG) {

				logger.debug(text);

			} else if (logLevel == Level.INFO) {

				logger.info(text);

			} else if (logLevel == Level.WARN) {

				logger.warn(text);

			} else if (logLevel == Level.ERROR) {

				logger.error(text);

			} else if (logLevel == Level.FATAL) {

				logger.fatal(text);

			} else {

				// use the 'trace' log level by default
				logger.trace(text);

			}

		}

	}