view src/main/java/net/borgac/clusterrpc/client/StderrLogger.java @ 6:0e608c466a58

Implement ClientChannel/SocketWrapper and add logging and tests
author Lewin Bormann <lbo@spheniscida.de>
date Sat, 24 Sep 2016 16:42:13 +0200
parents
children
line wrap: on
line source

package net.borgac.clusterrpc.client;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author lbo
 */
public class StderrLogger implements Logger {

    private Loglevel loglevel;
    private final SimpleDateFormat formatter;

    public StderrLogger() {
        this.loglevel = Loglevel.ERROR;
        this.formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
    }

    public StderrLogger(Loglevel l) {
        this();
        this.loglevel = l;
    }

    @Override
    public void log(Loglevel l, Object... os) {
        if (l.compareTo(loglevel) >= 0) {
            StringBuilder line = new StringBuilder();

            line.append(formatter.format(new Date()));
            line.append(' ');
            line.append(loglevel.toString());
            line.append(' ');

            for (Object o : os) {
                line.append(o.toString());
            }
            System.err.println(line.toString());
        }

        if (loglevel == Loglevel.FATAL) {
            System.err.println("Logged FATAL exception; aborting...");
            System.exit(1);
        }
    }

    @Override
    public void setLoglevel(Loglevel l) {
        this.loglevel = l;
    }
}