Files
VisualSapfor/src/Common/Utils/Loggable.java
2024-10-08 15:32:39 +03:00

48 lines
1.6 KiB
Java

package Common.Utils;
import Common_old.UI.DebugPrintLevel;
import Common_old.UI.UI;
import Common_old.Utils.Utils;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.Paths;
import java.util.Date;
public interface Loggable {
String getLogHomePath();
String getLogName();
default File getLogFile() {
return Paths.get(getLogHomePath(), (getLogName() + "_log.txt")).toFile();
}
default void ClearLog() {
try {
Utils.forceDeleteWithCheck(getLogFile());
} catch (Exception ignored) {
}
}
default void Print(String message) {
try {
FileWriter Log = new FileWriter(getLogFile(), true);
String datedMessage = CommonUtils.Brackets(new Date()) + " " + message;
Log.write(datedMessage + "\n");
Log.close();
} catch (Exception ignored) {
}
}
default void Print(DebugPrintLevel level, String message) {
if (level.isEnabled())
Print(CommonUtils.Brackets(level.getDescription()) + " " + message);
}
default void PrintException(Exception ex) {
StringWriter out = new StringWriter();
PrintWriter writer = new PrintWriter(out);
ex.printStackTrace(writer);
writer.flush();
Print(out.toString());
if (CommonUtils.hasUI())
UI.Error("Возникло исключение. Подробности в файле журнала\n" +
CommonUtils.Brackets(getLogFile().getAbsolutePath()));
}
}