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