Projet_JAVA_P2P_STRI2A/src/tools/Logger.java
2020-03-04 15:03:23 +01:00

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);
}
}