122 lines
2.6 KiB
Java
122 lines
2.6 KiB
Java
package tools;
|
|
import tools.LogLevel;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.StandardOpenOption;
|
|
import java.io.IOException;
|
|
import java.sql.Timestamp;
|
|
|
|
|
|
/** Helper to log.
|
|
* @author Louis Royer
|
|
* @author Flavien Haas
|
|
* @author JS Auge
|
|
* @version 1.0
|
|
*/
|
|
public class Logger {
|
|
private Path logFile;
|
|
|
|
public Logger(String logFile) {
|
|
assert logFile != null : "Logfile name is null";
|
|
this.logFile = Paths.get(logFile);
|
|
try {
|
|
this.logFile.toFile().createNewFile();
|
|
} catch (IOException e) {
|
|
System.err.println("Error: cannot initialize logfile");
|
|
}
|
|
}
|
|
|
|
/** Appends log to filelog and print to stderr.
|
|
* @param text Text to log
|
|
*/
|
|
private void write(String text, LogLevel logLevel) {
|
|
String msg = "[" + new Timestamp(System.currentTimeMillis()) + "] " + text + "\n";
|
|
String level = null;
|
|
switch (logLevel) {
|
|
case Error:
|
|
level = "[Error]";
|
|
break;
|
|
case Info:
|
|
level = "[Info]";
|
|
break;
|
|
case Warning:
|
|
level = "[Warning]";
|
|
break;
|
|
case Action:
|
|
level = "[Action]";
|
|
break;
|
|
case Debug:
|
|
level = "[Debug]";
|
|
break;
|
|
default:
|
|
System.err.println("Error: incorrect logLevel");
|
|
}
|
|
if (level != null) {
|
|
msg = level + " " + msg;
|
|
}
|
|
switch (logLevel) {
|
|
case Error:
|
|
case Info:
|
|
case Warning:
|
|
case Debug:
|
|
default:
|
|
System.err.println(text);
|
|
break;
|
|
case Action:
|
|
break;
|
|
}
|
|
switch (logLevel) {
|
|
case Debug:
|
|
break;
|
|
case Error:
|
|
case Info:
|
|
case Warning:
|
|
default:
|
|
try {
|
|
Files.write(logFile, msg.getBytes(), StandardOpenOption.APPEND);
|
|
} catch (IOException e) {
|
|
System.err.println("Error: cannot write in logfile");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/** Appends log to filelog and print to stderr.
|
|
* Adds [TCP] in log line.
|
|
* @param text Text to log
|
|
* @param logLevel Type of log
|
|
*/
|
|
public void writeTCP(String text, LogLevel logLevel) {
|
|
write("[TCP] " + text, logLevel);
|
|
}
|
|
|
|
/** Appends log to filelog and print to stderr.
|
|
* Adds [TCP] in log line.
|
|
* @param text Text to log
|
|
* @param logLevel Type of log
|
|
*/
|
|
public void writeTCP(Exception e, LogLevel logLevel) {
|
|
writeTCP(e.toString(), logLevel);
|
|
}
|
|
|
|
/** Appends log to filelog and print to stderr.
|
|
* Adds [UDP] in log line.
|
|
* @param text Text to log
|
|
* @param logLevel Type of log
|
|
*/
|
|
public void writeUDP(String text, LogLevel logLevel) {
|
|
write("[UDP] " + text, logLevel);
|
|
}
|
|
|
|
/** Appends log to filelog and print to stderr.
|
|
* Adds [UDP] in log line.
|
|
* @param text Text to log
|
|
* @param logLevel Type of log
|
|
*/
|
|
public void writeUDP(Exception e, LogLevel logLevel) {
|
|
writeUDP(e.toString(), logLevel);
|
|
}
|
|
|
|
}
|