< prev index next >

modules/javafx.base/src/main/java/com/sun/javafx/binding/Logging.java

Print this page

        

@@ -27,13 +27,85 @@
 
 import com.sun.javafx.logging.PlatformLogger;
 
 public class Logging {
 
-    private static class LoggerHolder {
-        private static final PlatformLogger INSTANCE = PlatformLogger.getLogger("javafx.beans");
+    public static ErrorLogger getLogger() {
+        return ErrorLogger.INSTANCE;
     }
 
-    public static PlatformLogger getLogger() {
-        return LoggerHolder.INSTANCE;
+    /**
+     * A PlatformLogger that keeps a record ({@code ErrorLogRecord}) of the last error ({@code Throwable}) logged. 
+     */
+    public static class ErrorLogger extends PlatformLogger {
+
+        ErrorLogger() {
+            super(System.getLogger("javafx.beans"));
+        }
+
+        private static final ErrorLogger INSTANCE = new ErrorLogger();
+
+        public static class ErrorLogRecord {
+            private final Level level;
+            private final Throwable thrown;
+
+            public ErrorLogRecord(Level level, Throwable thrown) {
+                this.level = level;
+                this.thrown = thrown;
+            }
+
+            public Throwable getThrown() {
+                return thrown;
+            }
+
+            public Level getLevel() {
+                return level;
+            }
+        }
+
+        private ErrorLogRecord errorLogRecord;
+
+        public ErrorLogRecord getErrorLogRecord() {
+            return errorLogRecord;
+        }
+
+        public void setErrorLogRecord(ErrorLogRecord errorLogRecord) {
+            this.errorLogRecord = errorLogRecord;
+        }
+
+/*        @Override
+        public void severe(String msg, Throwable t) {
+            super.severe(msg, t);
+            errorLogRecord = new ErrorLogRecord(Level.SEVERE, t);
+        }*/
+
+        @Override
+        public void warning(String msg, Throwable t) {
+            super.warning(msg, t);
+            errorLogRecord = new ErrorLogRecord(Level.WARNING, t);
+        }
+
+/*        @Override
+        public void info(String msg, Throwable t) {
+            super.info(msg, t);
+            errorLogRecord = new ErrorLogRecord(Level.INFO, t);
+        }*/
+
+        @Override
+        public void fine(String msg, Throwable t) {
+            super.fine(msg, t);
+            errorLogRecord = new ErrorLogRecord(Level.FINE, t);
+        }
+
+/*        @Override
+        public void finer(String msg, Throwable t) {
+            super.finer(msg, t);
+            errorLogRecord = new ErrorLogRecord(Level.FINER, t);
+        }*/
+        
+/*        @Override
+        public void finest(String msg, Throwable t) {
+            super.finest(msg, t);
+            errorLogRecord = new ErrorLogRecord(Level.FINEST, t);
+        }*/
     }
 }
< prev index next >