1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package fr.ifremer.isisfish.logging;
27
28 import java.io.File;
29 import java.util.ArrayList;
30 import java.util.List;
31
32 import org.apache.commons.io.FileUtils;
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
35 import org.apache.logging.log4j.Level;
36 import org.apache.logging.log4j.LogManager;
37 import org.apache.logging.log4j.Logger;
38 import org.junit.Assert;
39 import org.junit.Ignore;
40 import org.junit.Test;
41
42 import fr.ifremer.isisfish.AbstractIsisFishTest;
43
44 @Ignore
45 public class SimulationLoggerUtilTest extends AbstractIsisFishTest {
46
47 static private final String category = "fr.ifremer.isisfish.logging";
48
49 static private final String appenderId = category+"."+"myLogger_" + System.currentTimeMillis();
50
51 static private Log log = LogFactory.getLog(category);
52
53 @Test
54 public void testSimulationLoggerInfo() throws Exception {
55
56 Log logInit = LogFactory.getLog(appenderId);
57 Log logInit2 = LogFactory.getLog(appenderId + ".hip");
58
59 List<String> messagesToWrite = new ArrayList<String>();
60 List<String> messagesToSkip = new ArrayList<String>();
61
62 logInfo(logInit, "before new config", null, null);
63 logInfo(logInit2, "before new config", null, null);
64 logInfo(log, "before new config", null, null);
65
66
67 Logger hibernatelog = LogManager.getLogger("org.hibernate");
68
69 Level hibernateLogLevel = hibernatelog.getLevel();
70
71 String loggerFile = new File(getTestDirectory(), SimulationLoggerUtilTest.class.getSimpleName() + "_" + System.nanoTime() + ".log").getAbsolutePath();
72
73
74 Assert.assertEquals(hibernateLogLevel, LogManager.getLogger("org.hibernate").getLevel());
75 final Log logger = LogFactory.getLog(appenderId);
76
77
78 String message = "THIS LOG MUST NOT APPEAR IN FILE : hibernate logger's level was kept to his original level (" + hibernateLogLevel + ") ";
79 hibernatelog.info(message);
80 messagesToSkip.add(message);
81 message = "THIS LOG MUST APPEAR IN FILE : hibernate logger's level was kept to his original level (" + hibernateLogLevel + ") ";
82
83 hibernatelog.fatal(message);
84 messagesToWrite.add(message);
85
86 logInfo(logInit, "after new config using old logger", messagesToWrite, messagesToSkip);
87
88 logInfo(logger, "after new config using new logger", messagesToWrite, messagesToSkip);
89 logInfo(log, "after new config using new logger", messagesToWrite, messagesToSkip);
90
91 final String message0 = "BLOCK LOG must not appear in log file !!! since coming from another thread";
92 messagesToSkip.add(message0);
93
94
95 Thread t = new Thread(new Runnable() {
96 public void run() {
97
98
99 logger.info(message0);
100 log.info(message0);
101 }
102 });
103 t.start();
104
105
106
107 t.join();
108 Assert.assertTrue(!t.isAlive());
109
110 message = "appender was destoyed WE MUST NOT SEE this message in simulation log file!!!";
111 logInit.info(message);
112 messagesToSkip.add(message);
113
114 logInfo(logInit2, "ANOTHER CHANGE METHOD!!!", messagesToSkip, messagesToSkip);
115 logInfo(log, "ANOTHER CHANGE METHOD!!!", messagesToSkip, messagesToSkip);
116
117 File logFile = new File(loggerFile);
118
119 String logFileContent = FileUtils.readFileToString(logFile);
120
121 log.info("++ File content ----------------------------------------------------------");
122 for (Object o : logFileContent.split("\n")) {
123 log.info(o);
124 }
125 log.info("-- File content ----------------------------------------------------------");
126 log.info("-- nb messages skipped : " + messagesToSkip.size());
127 log.info("-- nb messages written : " + messagesToWrite.size());
128
129 System.out.println("test messages to be skipped");
130 for (String s : messagesToSkip) {
131 Assert.assertTrue("should not have write this entry : '" + s + "'", logFileContent.indexOf(s) == -1);
132 }
133
134 System.out.println("test messages to be written");
135 for (String s : messagesToWrite) {
136 Assert.assertTrue("should have write this entry : '" + s + "'", logFileContent.indexOf(s) > -1);
137 }
138
139 logFile.delete();
140
141 }
142
143 @Test
144 public void testSimulationLoggerDebug() throws Exception {
145
146 Log logInit = LogFactory.getLog(appenderId);
147 Log logInit2 = LogFactory.getLog(appenderId + ".hip");
148
149 List<String> messagesToWrite = new ArrayList<String>();
150 List<String> messagesToSkip = new ArrayList<String>();
151
152 logDebug(logInit, "before new config", null);
153 logDebug(logInit2, "before new config", null);
154 logDebug(log, "before new config", null);
155
156
157 Logger hibernatelog = LogManager.getLogger("org.hibernate");
158
159 Level hibernateLogLevel = hibernatelog.getLevel();
160
161
162 String loggerFile = "testLog.log";
163
164
165 Assert.assertEquals(hibernateLogLevel, LogManager.getLogger("org.hibernate").getLevel());
166 final Log logger = LogFactory.getLog(appenderId);
167
168
169 String message = "THIS LOG MUST NOT APPEAR IN FILE : hibernate logger's level was kept to his original level (" + hibernateLogLevel + ") ";
170 hibernatelog.info(message);
171 messagesToSkip.add(message);
172 message = "THIS LOG MUST APPEAR IN FILE : hibernate logger's level was kept to his original level (" + hibernateLogLevel + ") ";
173
174 hibernatelog.fatal(message);
175 messagesToWrite.add(message);
176
177 logDebug(logInit, "after new config using old logger", messagesToWrite);
178
179 logDebug(logger, "after new config using new logger", messagesToWrite);
180 logDebug(log, "after new config using new logger", messagesToWrite);
181
182 final String message0 = "BLOCK LOG must not appear in log file !!! since coming from another thread";
183 messagesToSkip.add(message0);
184
185
186 Thread t = new Thread(new Runnable() {
187 public void run() {
188
189
190 logger.info(message0);
191 log.info(message0);
192 }
193 });
194 t.start();
195
196
197
198 t.join();
199 Assert.assertTrue(!t.isAlive());
200
201 message = "appender was destoyed WE MUST NOT SEE this message in simulation log file!!!";
202 logInit.info(message);
203 messagesToSkip.add(message);
204
205 logDebug(logInit2, "ANOTHER CHANGE METHOD!!!", messagesToSkip);
206 logDebug(log, "ANOTHER CHANGE METHOD!!!", messagesToSkip);
207
208 File logFile = new File(loggerFile);
209
210 String logFileContent = FileUtils.readFileToString(logFile);
211
212 log.info("++ File content ----------------------------------------------------------");
213 for (Object o : logFileContent.split("\n")) {
214 log.info(o);
215 }
216 log.info("-- File content ----------------------------------------------------------");
217 log.info("-- nb messages skipped : " + messagesToSkip.size());
218 log.info("-- nb messages written : " + messagesToWrite.size());
219
220
221 for (String s : messagesToSkip) {
222 Assert.assertTrue(logFileContent.indexOf(s) == -1);
223 }
224
225 for (String s : messagesToWrite) {
226 Assert.assertTrue(s, logFileContent.indexOf(s) > -1);
227 }
228
229 logFile.delete();
230
231 }
232
233 private void logInfo(Log logger, String prefix, List<String> messagesToWrite, List<String> messagesToSkip) {
234 String message;
235
236
237 logger.debug(message = prefix + " debug");
238 if (messagesToWrite != null) {
239 messagesToSkip.add(message);
240 }
241
242 logger.info(message = prefix + " info");
243 if (messagesToWrite != null) {
244 messagesToWrite.add(message);
245 }
246
247 logger.warn(message = prefix + " warn");
248 if (messagesToWrite != null) {
249 messagesToWrite.add(message);
250 }
251
252 logger.error(message = prefix + " error");
253 if (messagesToWrite != null) {
254 messagesToWrite.add(message);
255 }
256
257 logger.fatal(message = prefix + " fatal");
258 if (messagesToWrite != null) {
259 messagesToWrite.add(message);
260 }
261 }
262
263 private void logDebug(Log logger, String prefix, List<String> messagesToWrite) {
264 String message;
265
266
267 logger.debug(message = prefix + " debug");
268 if (messagesToWrite != null) {
269 messagesToWrite.add(message);
270 }
271
272 logger.info(message = prefix + " info");
273 if (messagesToWrite != null) {
274 messagesToWrite.add(message);
275 }
276
277 logger.warn(message = prefix + " warn");
278 if (messagesToWrite != null) {
279 messagesToWrite.add(message);
280 }
281
282 logger.error(message = prefix + " error");
283 if (messagesToWrite != null) {
284 messagesToWrite.add(message);
285 }
286
287 logger.fatal(message = prefix + " fatal");
288 if (messagesToWrite != null) {
289 messagesToWrite.add(message);
290 }
291 }
292 }