org.slf4j.impl.LoggerFactoryImpl Maven / Gradle / Ivy
package org.slf4j.impl;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
/**
* @author Samuel Grenier
*/
public class LoggerFactoryImpl implements ILoggerFactory {
private Level logLevel = Level.INFO;
private PrintStream stream = System.out;
private boolean shouldClose = false;
public LoggerFactoryImpl() {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
if (!shouldClose) {
return;
}
stream.close();
}
}));
}
public void setLogPath(File logPath) {
if (logPath == null) {
shouldClose = false;
stream = System.out;
return;
}
try {
if (shouldClose) {
stream.close();
}
shouldClose = true;
boolean exists = logPath.exists();
OutputStream out = new FileOutputStream(logPath, exists);
stream = new PrintStream(out, false, "UTF-8");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public PrintStream getPrintStream() {
return stream;
}
public void setLogLevel(Level level) {
this.logLevel = level;
}
public Level getLogLevel() {
return logLevel;
}
@Override
public Logger getLogger(String name) {
return new LoggerImpl(this, name);
}
}