Created
December 29, 2019 02:35
-
-
Save ryoakg/63e7d197a33d6f478cae26a794565c22 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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