package com.idega.util;
import java.io.*;
import java.util.*;
/**
* Borrowed from com.wrox.util
*/
public class LogWriter
{
public static final int NONE = 0;
public static final int ERROR = 1;
public static final int INFO = 2;
public static final int DEBUG = 3;
private static final String ERROR_TEXT = "error";
private static final String INFO_TEXT = "info";
private static final String DEBUG_TEXT = "debug";
private PrintWriter pw;
private String owner;
private int logLevel;
public LogWriter(String owner, int logLevel, PrintWriter pw)
{
this.pw = pw;
this.owner = owner;
this.logLevel = logLevel;
}
public LogWriter(String owner, int logLevel)
{
this(owner, logLevel, null);
}
public int getLogLevel()
{
return this.logLevel;
}
public PrintWriter getPrintWriter()
{
return this.pw;
}
public void setLogLevel(int logLevel)
{
this.logLevel = logLevel;
}
public void setPrintWriter(PrintWriter pw)
{
this.pw = pw;
}
public void log(String msg, int severityLevel)
{
if (this.pw != null)
{
if (severityLevel <= this.logLevel)
{
this.pw.println("[" + new Date() + "] " +
getSeverityString(severityLevel) + ": " +
this.owner + ": " + msg);
}
}
}
public void debug(String msg)
{
log(msg,DEBUG);
}
public void log(Throwable t, String msg, int severityLevel)
{
log(msg + " : " + toTrace(t), severityLevel);
}
private String getSeverityString(int severityLevel)
{
switch (severityLevel)
{
case ERROR:
return ERROR_TEXT;
case INFO:
return INFO_TEXT;
case DEBUG:
return DEBUG_TEXT;
default:
return "Unknown";
}
}
private String toTrace(Throwable e)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.flush();
return sw.toString();
}
}