View Javadoc

1   /*******************************************************************************
2    * Copyright (c) 2007, 2014 Massimiliano Ziccardi
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *******************************************************************************/
16  package it.jnrpe.server;
17  
18  import it.jnrpe.events.IJNRPEEvent;
19  import it.jnrpe.events.IJNRPEEventListener;
20  
21  import java.util.HashMap;
22  import java.util.Map;
23  
24  import org.slf4j.Logger;
25  import org.slf4j.LoggerFactory;
26  
27  /**
28   * The JNRPE Server uses this event listener to populate the log files.
29   * 
30   * @author Massimiliano Ziccardi
31   * 
32   */
33  public class EventLoggerListener implements IJNRPEEventListener {
34  	/**
35  	 * All the loggers.
36  	 */
37  	private final Map<String, Logger> loggersMap = new HashMap<String, Logger>();
38  
39  	/**
40  	 * This method receives the log event and logs it.
41  	 * 
42  	 * @param sender
43  	 *            The source of the event
44  	 * @param event
45  	 *            The event
46  	 */
47  	public final void receive(final Object sender, final IJNRPEEvent event) {
48  		String sClassName = sender.getClass().getName();
49  
50  		Logger logger = loggersMap.get(sClassName);
51  
52  		if (logger == null) {
53  			logger = LoggerFactory.getLogger(sender.getClass());
54  			loggersMap.put(sClassName, logger);
55  		}
56  
57  		Throwable error = (Throwable) event.getEventParams().get("EXCEPTION");
58  
59  		if (error != null) {
60  			error.printStackTrace();
61  		}
62  
63  		String sEventName = event.getEventName();
64  
65  		if (sEventName.equals("TRACE")) {
66  			if (error != null) {
67  				logger.trace((String) event.getEventParams().get("MESSAGE"),
68  						error);
69  			} else {
70  				logger.trace((String) event.getEventParams().get("MESSAGE"));
71  			}
72  			return;
73  		}
74  
75  		if (sEventName.equals("DEBUG")) {
76  			if (error != null) {
77  				logger.debug((String) event.getEventParams().get("MESSAGE"),
78  						error);
79  			} else {
80  				logger.debug((String) event.getEventParams().get("MESSAGE"));
81  			}
82  			return;
83  		}
84  
85  		if (sEventName.equals("INFO")) {
86  			if (error != null) {
87  				logger.info((String) event.getEventParams().get("MESSAGE"),
88  						error);
89  			} else {
90  				logger.info((String) event.getEventParams().get("MESSAGE"));
91  			}
92  			return;
93  		}
94  
95  		if (sEventName.equals("WARNING")) {
96  			if (error != null) {
97  				logger.warn((String) event.getEventParams().get("MESSAGE"),
98  						error);
99  			} else {
100 				logger.warn((String) event.getEventParams().get("MESSAGE"));
101 			}
102 			return;
103 		}
104 
105 		if (sEventName.equals("ERROR")) {
106 			if (error != null) {
107 				logger.error((String) event.getEventParams().get("MESSAGE"),
108 						error);
109 			} else {
110 				logger.error((String) event.getEventParams().get("MESSAGE"));
111 			}
112 			return;
113 		}
114 
115 		if (sEventName.equals("FATAL")) {
116 			if (error != null) {
117 				logger.error((String) event.getEventParams().get("MESSAGE"),
118 						(Throwable) (event.getEventParams().get("EXCEPTION")));
119 			} else {
120 				logger.error((String) event.getEventParams().get("MESSAGE"));
121 			}
122 			return;
123 		}
124 	}
125 
126 }