Source code: org/ahlner/Log4J2DB/beans/Log4JMessageListener.java
1 /* $Id: Log4JMessageListener.java,v 1.11 2003/08/17 17:57:11 phah Exp $
2 * Project: Log4J2DB.
3 *
4 * This Software is published under General Public License.
5 * See terms of licence at gnu.org
6 */
7 /*
8 * Created on Mar 8, 2003 by Philipp Ahlner
9 */
10 package org.ahlner.Log4J2DB.beans;
11 import javax.ejb.EJBException;
12 import javax.ejb.MessageDrivenBean;
13 import javax.ejb.MessageDrivenContext;
14 import javax.jms.JMSException;
15 import javax.jms.Message;
16 import javax.jms.MessageListener;
17 import javax.jms.ObjectMessage;
18 import org.apache.log4j.Logger;
19 import org.apache.log4j.spi.LoggingEvent;
20 /**
21 * @author Philipp Ahlner
22 * @ejb.bean name = "Log4JMessageListener" destination-type = "javax.jms.Topic" acknowledge-mode = "Auto-acknowledge"
23 * @jboss.destination-jndi-name name = "MyErrorsTopic"
24 */
25 public class Log4JMessageListener implements MessageDrivenBean, MessageListener
26 {
27 private static Logger log = Logger.getLogger(Log4JMessageListener.class);
28 /* (non-Javadoc)
29 * @see javax.ejb.MessageDrivenBean#setMessageDrivenContext(javax.ejb.MessageDrivenContext)
30 */
31 MessageDrivenContext context = null;
32 public void ejbCreate()
33 {
34 log.debug("ejbCreate()");
35 }
36 public void setMessageDrivenContext(MessageDrivenContext context) throws EJBException
37 {
38 this.context = context;
39 }
40 /* (non-Javadoc)
41 * @see javax.ejb.MessageDrivenBean#ejbRemove()
42 */
43 public void ejbRemove()
44 {
45 log.debug("ejbRemove()");
46 }
47 /* (non-Javadoc)
48 * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
49 */
50 public void onMessage(Message msg)
51 {
52 log.debug("onMessage()");
53 LoggingEvent evt = null;
54 if (msg instanceof ObjectMessage)
55 {
56 ObjectMessage omsg = (ObjectMessage) msg;
57 try
58 {
59 evt = (LoggingEvent) omsg.getObject();
60 }
61 catch (JMSException e)
62 {
63 log.error("Received not a Log4J LoggingEvent: " + e.getMessage());
64 }
65 try
66 {
67 LogEventHome logEventHome = LogEventUtil.getHome();
68 // map LoggingEvent properties to bean properties
69 logEventHome.create(
70 "n/a", //FIXME hostname must be decoded in further log4j versions!!!
71 evt.categoryName,
72 new Float(evt.timeStamp),
73 evt.level.toString(),
74 evt.getRenderedMessage());
75 }
76 catch (Exception e1)
77 {
78 e1.printStackTrace();
79 }
80 }
81 }
82 }
83 /*
84 * $Log: Log4JMessageListener.java,v $
85 * Revision 1.11 2003/08/17 17:57:11 phah
86 * fixed BugId: [ 789746 ] Session not serailizable
87 *
88 * Revision 1.10 2003/07/05 17:20:40 phah
89 * some improvements
90 *
91 * Revision 1.9 2003/04/12 09:39:32 phah
92 * bug fixed
93 *
94 * Revision 1.8 2003/03/24 20:45:47 phah
95 * Primary key class removed
96 *
97 * Revision 1.7 2003/03/23 23:13:02 phah
98 * Interfaces replaced by XDoclet
99 *
100 * Revision 1.6 2003/03/15 16:08:13 phah
101 * deployment descriptor changed
102 *
103 * Revision 1.5 2003/03/13 19:31:57 phah
104 * some interface changes
105 *
106 * Revision 1.4 2003/03/12 21:27:04 phah
107 * Interface change: serialization of LoggingEvent resides in
108 * the MessageListener.
109 *
110 * Revision 1.3 2003/03/12 18:16:07 phah
111 * souce format and cvs id + log added
112 *
113 */