package log;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Logger
{
private static final String infoKey = "INFO";
private static final String errorKey = "ERROR";
private static final Printer out = new Printer();
public static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
private static String getCallingClass()
{
final Throwable t = new Throwable();
final StackTraceElement methodCaller = t.getStackTrace()[3];
String filename = methodCaller.getFileName();
return filename.substring(0, filename.lastIndexOf('.'));
}
private static String baseLogMessage(String key, String msg)
{
return sdf.format(new Date()) + " [" + key + "] [" + getCallingClass() + "] " + msg;
}
public static void traceINFO(String msg)
{
out.println(baseLogMessage(infoKey, msg));
}
public static void traceINFO_NoNewLine(String msg)
{
out.print(baseLogMessage(infoKey, msg));
}
public static void traceINFO_NoBaseLine(String msg)
{
out.println(msg);
}
public static void traceERROR(String msg)
{
out.println(baseLogMessage(errorKey, msg));
}
public static void traceINFO(int level, long[] array)
{
StringBuilder sBuilder = new StringBuilder();
sBuilder.append(level + " : ");
for (int i = 0; i < array.length; i++)
{
if (i == array.length - 1)
{
sBuilder.append(array[i]);
}
else
{
sBuilder.append(array[i] + ", ");
}
}
traceINFO(sBuilder.toString());
}
public static void traceINFO(String... msgs)
{
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < msgs.length; i++)
{
if (i == msgs.length - 1)
{
sBuilder.append(msgs[i]);
}
else
{
sBuilder.append(msgs[i] + ", ");
}
}
traceINFO(sBuilder.toString());
}
public static void traceERROR(Exception e)
{
if (e != null)
{
out.println(baseLogMessage(errorKey, e.getMessage()));
e.printStackTrace(System.out);
}
}
public static void endLogging()
{
out.close();
}
}