package Common.Utils; import Common.Visual.CommonUI; import _VisualDVM.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 PrintException(Exception ex) { StringWriter out = new StringWriter(); PrintWriter writer = new PrintWriter(out); ex.printStackTrace(writer); writer.flush(); Print(out.toString()); if (CommonUI.isActive()) CommonUI.Error("Возникло исключение. Подробности в файле журнала\n" + CommonUtils.Brackets(getLogFile().getAbsolutePath())); } }