AbstractLogger.java
package eu.javaexperience.log;
import java.util.concurrent.atomic.AtomicReference;
import eu.javaexperience.asserts.AssertArgument;
public abstract class AbstractLogger implements Logger
{
protected final AtomicReference<LoggingDetailLevel> currentLogLevel =
new AtomicReference<LoggingDetailLevel>(LogLevel.INFO);
protected final String name;
public AbstractLogger(LoggableUnitDescriptor descr)
{
this(descr.getUnitShortName(), descr.getDefaultLoggingLevel());
}
public AbstractLogger(String name, LoggingDetailLevel defaultLoglevel)
{
AssertArgument.assertNotNull(this.name = name, "name");
AssertArgument.assertNotNull(defaultLoglevel, "loglevel");
currentLogLevel.set(defaultLoglevel);
}
@Override
public String getFacilityName()
{
return name;
}
@Override
public void setLogLevel(LoggingDetailLevel level)
{
AssertArgument.assertNotNull(level, "loglevel");
currentLogLevel.set(level);
}
@Override
public LoggingDetailLevel getLogLevel()
{
return currentLogLevel.get();
}
@Override
public boolean mayLog(LoggingDetailLevel level)
{
return level.getLevel() <= currentLogLevel.get().getLevel();
}
@Override
public void log(LoggingDetailLevel lvl, String str)
{
try
{
doLog(LoggingTools.createLogLine(this, lvl, str));
}
catch(Exception e)
{
System.err.println("Exception while logging: ");
e.printStackTrace();
}
}
@Override
public void logFormat(LoggingDetailLevel lvl, String formatString, Object... params)
{
try
{
doLog(LoggingTools.createLogLine(this, lvl, formatString, params));
}
catch(Exception e)
{
System.err.println("Exception while logging: ");
e.printStackTrace();
}
}
@Override
public void logException(LoggingDetailLevel lvl, Throwable t)
{
try
{
doLog(LoggingTools.createExceptionLogLine(this, lvl, t));
}
catch(Exception e)
{
System.err.println("Exception while logging: ");
e.printStackTrace();
}
}
protected abstract void doLog(String toLog);
@Override
public void logExceptionFormat(LoggingDetailLevel level, Throwable t, String format, Object... params)
{
try
{
doLog(LoggingTools.createFormattedExceptionLogLine(this, level, t, format, params));
}
catch(Exception e)
{
System.err.println("Exception while logging: ");
e.printStackTrace();
}
}
}