All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jp.vmi.selenium.selenese.utils.LogRecorder Maven / Gradle / Ivy

package jp.vmi.selenium.selenese.utils;

import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.commons.lang3.time.FastDateFormat;

/**
 * Record log message.
 */
public class LogRecorder {

    /**
     * Log level.
     */
    @SuppressWarnings("javadoc")
    public static enum Level {
        INFO, ERROR
    }

    /**
     * Log message.
     */
    public static class LogMessage {

        /** Recorded date */
        public final long date;

        /** Level */
        public final Level level;

        /** Message */
        public final String message;

        private LogMessage(long date, Level level, String message) {
            this.date = System.currentTimeMillis();
            this.level = level;
            this.message = message;
        }

        @Override
        public String toString() {
            return DATE_TIME_FORMAT.format(date) + "[" + level + "] " + message;
        }
    }

    private static final FastDateFormat DATE_TIME_FORMAT = FastDateFormat.getInstance("[yyyy-MM-dd HH:mm:ss.SSS] ");

    private final PrintStream ps;

    private final List messages = new ArrayList();

    private final List errorMessages = new ArrayList();

    /**
     * Constructor.
     *
     * @param ps PrintStream object.
     */
    public LogRecorder(PrintStream ps) {
        this.ps = ps;
    }

    /**
     * Get current time millis. (override for test)
     *
     * @return System.currentTimeMillis()
     */
    public long now() {
        return System.currentTimeMillis();
    }

    /**
     * Log info message.
     *
     * @param message log message.
     */
    public void info(String message) {
        LogMessage lmsg = new LogMessage(now(), Level.INFO, message);
        messages.add(lmsg);
        ps.println(lmsg);
    }

    /**
     * Log error message.
     *
     * @param message error message.
     */
    public void error(String message) {
        LogMessage lmsg = new LogMessage(now(), Level.ERROR, message);
        messages.add(lmsg);
        errorMessages.add(lmsg);
        ps.println(lmsg);
    }

    /**
     * Get logged messages.
     *
     * @return messages.
     */
    public List getMessages() {
        return Collections.unmodifiableList(messages);
    }

    /**
     * Get logged error messages.
     *
     * @return error messages.
     */
    public List getErrorMessages() {
        return Collections.unmodifiableList(errorMessages);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy