You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Dimitri PISSARENKO <di...@gmx.net> on 2002/07/17 13:28:10 UTC

Printing log messages into a text area

Hello!

Is it possible to write an appender which prints the log messages in a
textarea of a window?

If yes, are there any examples for that?

Thanks

Dimitri PIssarenko

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Printing log messages into a text area

Posted by Dimitri PISSARENKO <di...@gmx.net>.
Thanks!

On Wed, 17 Jul 2002 23:19:12 -0400, you wrote:

>Dimitri PISSARENKO wrote:
>
>>Hello!
>>
>>Is it possible to write an appender which prints the log messages in a
>>textarea of a window?
>>
>>If yes, are there any examples for that?
>>
>>Thanks
>>
>>Dimitri PIssarenko
>>
>>--
>>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>
>>
>>  
>>
>I wrote one of those a little while ago:
>
>// basic imports
>import java.util.*;
>import java.io.*;
>import java.text.*;
>import java.awt.*;
>import javax.swing.*;
>import javax.swing.text.*;
> 
>// log4j-specific imports
>import org.apache.log4j.*;
>import org.apache.log4j.spi.LoggingEvent;
> 
>public class Log4JGUIConsoleSessionLog extends AppenderSkeleton {
> 
>        protected static SimpleAttributeSet simpleAttributeSet = new 
>SimpleAttributeSet();
> 
>        protected int width;
>        protected int height;
>        protected int tlcornerXcoord;
>        protected int tlcornerYcoord;
>        protected String resetScrollPoint = "false";
>        protected Document document;
>        protected Log4JConsoleSessionLogFrame logFrame = null;
> 
>        public Log4JGUIConsoleSessionLog() {
>                super();
>        }
> 
>        public void close() {
>        }
> 
>        public boolean requiresLayout() {
>                return true;
>        }
> 
>        public Layout getLayout() {
>                return layout;
>        }
>        public void setLayout(Layout layout) {
>                this.layout=layout;
>        }
> 
>        public void setName(String name) {
>                this.name = name;
>        }
> 
>        // Java bean-style get/set methods for parameters
>        public int getWidth() {
>                return width;
>        }
>        public void setWidth(int width) {
>                this.width = width;
>        }
>        public int getHeight() {
>                return height;
>        }
>        public void setHeight(int height) {
>                this.height = height;
>        }
>        public int getTlcornerXcoord() {
>                return tlcornerXcoord;
>        }
>        public void setTlcornerXcoord(int tlcornerXcoord) {
>                this.tlcornerXcoord = tlcornerXcoord;
>        }
>        public int getTlcornerYcoord() {
>                return tlcornerYcoord;
>        }
>        public void setTlcornerYcoord(int tlcornerYcoord) {
>                this.tlcornerYcoord = tlcornerYcoord;
>        }
>        public String getResetScrollPoint() {
>                return resetScrollPoint;
>        }
>        public void setResetScrollPoint(String resetScrollPoint) {
>                this.resetScrollPoint = resetScrollPoint;
>        }
> 
>    /**
>     * Append the event's message to the Document
>     */
>        protected void append(LoggingEvent event) {
> 
>                if (logFrame == null) {
>                        logFrame = new 
>Log4JConsoleSessionLogFrame(width, height);
>                        document = logFrame.getDocument();
>                        // Center the frame and show it
>                        logFrame.validate();
>                        logFrame.pack();
>                        Dimension screenSize = 
>Toolkit.getDefaultToolkit().getScreenSize();
>                        logFrame.setLocation(tlcornerXcoord,tlcornerYcoord);
>                        logFrame.setVisible(true);
>                }
>                try {
>                        String text = getLayout().format(event);
>                        document.insertString(document.getLength(), 
>text, simpleAttributeSet);
>                        if ("true".equals(resetScrollPoint)) {
>                                
>logFrame.getJTextArea().setCaretPosition(document.getLength());
>                        }
>                }
>                catch (BadLocationException ble) {
>                        ble.printStackTrace();
>                }
>    }
>
>
>        class Log4JConsoleSessionLogFrame extends JFrame {
> 
>                protected Document document = null;
>                protected JTextArea textArea = new JTextArea();
> 
>                public Log4JConsoleSessionLogFrame(int width, int height) {
>                        super("Log4JConsoleSessionLog");
>                        setTitle("Log4JConsoleSessionLog");
> 
>                        setBackground(Color.white);
>                        getContentPane().setLayout(new BorderLayout());
> 
>                        JPanel topPanel = new JPanel();
>                        topPanel.setLayout(new BorderLayout());
>                        getContentPane().add(topPanel, BorderLayout.CENTER);
> 
>                        textArea.setEditable(false);
>                        document = textArea.getDocument();
>                        JScrollPane scrollPane = new JScrollPane(textArea);
>                        
>scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
>                        //scrollPane.setPreferredSize(new Dimension(800, 
>500));
>                        scrollPane.setPreferredSize(new Dimension(width, 
>height));
>                        topPanel.add(scrollPane, BorderLayout.CENTER );
>                }
> 
>                public Document getDocument() {
>                        return document;
>                }
> 
>                public JTextArea getJTextArea() {
>                        return textArea;
>                }
>        }
>}
>
>
>-- 
>Mike Norman - mwnorman@sympatico.ca
>"'We have two ears and one mouth, so we may listen twice as much as we speak' -
>Epictetus.  Aha! This obviously explains many people's attitude to Usenet: "We
>have ten fingers and two eyes, so we may type five times as much drivel as we actually bother to read." - alt.humor.best-of-usenet


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Printing log messages into a text area

Posted by Mike Norman <mw...@sympatico.ca>.
Dimitri PISSARENKO wrote:

>Hello!
>
>Is it possible to write an appender which prints the log messages in a
>textarea of a window?
>
>If yes, are there any examples for that?
>
>Thanks
>
>Dimitri PIssarenko
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
>  
>
I wrote one of those a little while ago:

// basic imports
import java.util.*;
import java.io.*;
import java.text.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
 
// log4j-specific imports
import org.apache.log4j.*;
import org.apache.log4j.spi.LoggingEvent;
 
public class Log4JGUIConsoleSessionLog extends AppenderSkeleton {
 
        protected static SimpleAttributeSet simpleAttributeSet = new 
SimpleAttributeSet();
 
        protected int width;
        protected int height;
        protected int tlcornerXcoord;
        protected int tlcornerYcoord;
        protected String resetScrollPoint = "false";
        protected Document document;
        protected Log4JConsoleSessionLogFrame logFrame = null;
 
        public Log4JGUIConsoleSessionLog() {
                super();
        }
 
        public void close() {
        }
 
        public boolean requiresLayout() {
                return true;
        }
 
        public Layout getLayout() {
                return layout;
        }
        public void setLayout(Layout layout) {
                this.layout=layout;
        }
 
        public void setName(String name) {
                this.name = name;
        }
 
        // Java bean-style get/set methods for parameters
        public int getWidth() {
                return width;
        }
        public void setWidth(int width) {
                this.width = width;
        }
        public int getHeight() {
                return height;
        }
        public void setHeight(int height) {
                this.height = height;
        }
        public int getTlcornerXcoord() {
                return tlcornerXcoord;
        }
        public void setTlcornerXcoord(int tlcornerXcoord) {
                this.tlcornerXcoord = tlcornerXcoord;
        }
        public int getTlcornerYcoord() {
                return tlcornerYcoord;
        }
        public void setTlcornerYcoord(int tlcornerYcoord) {
                this.tlcornerYcoord = tlcornerYcoord;
        }
        public String getResetScrollPoint() {
                return resetScrollPoint;
        }
        public void setResetScrollPoint(String resetScrollPoint) {
                this.resetScrollPoint = resetScrollPoint;
        }
 
    /**
     * Append the event's message to the Document
     */
        protected void append(LoggingEvent event) {
 
                if (logFrame == null) {
                        logFrame = new 
Log4JConsoleSessionLogFrame(width, height);
                        document = logFrame.getDocument();
                        // Center the frame and show it
                        logFrame.validate();
                        logFrame.pack();
                        Dimension screenSize = 
Toolkit.getDefaultToolkit().getScreenSize();
                        logFrame.setLocation(tlcornerXcoord,tlcornerYcoord);
                        logFrame.setVisible(true);
                }
                try {
                        String text = getLayout().format(event);
                        document.insertString(document.getLength(), 
text, simpleAttributeSet);
                        if ("true".equals(resetScrollPoint)) {
                                
logFrame.getJTextArea().setCaretPosition(document.getLength());
                        }
                }
                catch (BadLocationException ble) {
                        ble.printStackTrace();
                }
    }


        class Log4JConsoleSessionLogFrame extends JFrame {
 
                protected Document document = null;
                protected JTextArea textArea = new JTextArea();
 
                public Log4JConsoleSessionLogFrame(int width, int height) {
                        super("Log4JConsoleSessionLog");
                        setTitle("Log4JConsoleSessionLog");
 
                        setBackground(Color.white);
                        getContentPane().setLayout(new BorderLayout());
 
                        JPanel topPanel = new JPanel();
                        topPanel.setLayout(new BorderLayout());
                        getContentPane().add(topPanel, BorderLayout.CENTER);
 
                        textArea.setEditable(false);
                        document = textArea.getDocument();
                        JScrollPane scrollPane = new JScrollPane(textArea);
                        
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
                        //scrollPane.setPreferredSize(new Dimension(800, 
500));
                        scrollPane.setPreferredSize(new Dimension(width, 
height));
                        topPanel.add(scrollPane, BorderLayout.CENTER );
                }
 
                public Document getDocument() {
                        return document;
                }
 
                public JTextArea getJTextArea() {
                        return textArea;
                }
        }
}


-- 
Mike Norman - mwnorman@sympatico.ca
"'We have two ears and one mouth, so we may listen twice as much as we speak' -
Epictetus.  Aha! This obviously explains many people's attitude to Usenet: "We
have ten fingers and two eyes, so we may type five times as much drivel as we actually bother to read." - alt.humor.best-of-usenet



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>