Skip to content

Instantly share code, notes, and snippets.

@ryoakg
Created December 29, 2019 02:35
Show Gist options
  • Save ryoakg/63e7d197a33d6f478cae26a794565c22 to your computer and use it in GitHub Desktop.
Save ryoakg/63e7d197a33d6f478cae26a794565c22 to your computer and use it in GitHub Desktop.
(import (java.util.logging LogRecord Logger Formatter SimpleFormatter StreamHandler)
(java.awt Image Color Dimension Insets Graphics)
(java.awt.image ImageObserver)
(javax.swing UIManager UnsupportedLookAndFeelException
BorderFactory
JComponent
JFrame JPanel Box JDialog
JScrollPane JScrollBar
JFileChooser
JLabel JTextField JPasswordField JTextArea
JButton ImageIcon
)
(javax.swing.border TitledBorder)
;; LAYOUT
(java.awt BorderLayout
GridBagLayout GridBagConstraints)
(javax.swing BoxLayout)
(java.awt.event MouseEvent MouseAdapter
;; ActionListener ActionEvent
;; ItemListener ItemEvent
WindowEvent WindowAdapter
)
)
(defn- text-area-handler [^OutputStream os ^Formatter fmt]
(doto (proxy [StreamHandler] [os fmt]
(publish [^LogRecord r]
(proxy-super publish r)
(.flush this))
(close []
(.flush this)))
(.setEncoding "UTF-8")))
(defn- make-log-viewer-&-logger []
(let [text-area (doto (JTextArea.)
(.setEditable false))
logger (doto (Logger/getLogger (str *ns*))
(.setLevel java.util.logging.Level/ALL)
(.setUseParentHandlers false)
(.addHandler (text-area-handler (TextAreaOutputStream. text-area)
(SimpleFormatter.))))]
[text-area logger]))
(def logger (atom nil))
(let [[text-area *logger] (make-log-viewer-&-logger)
frame (JFrame.)]
(reset! logger *logger)
(doto (.getContentPane frame)
(.add (doto text-area
(.setPreferredSize (Dimension. 800 200)))))
(doto frame
.pack
(.setVisible true)))
(.info @logger "aaa")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment