001 /**
002 * $Id: LogRecorder.java,v 1.8 2014/04/05 10:13:13 oboehm Exp $
003 *
004 * Copyright (c) 2008 by Oliver Boehm
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express orimplied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 *
018 * (c)reated 09.10.2008 by oliver (ob@oasd.de)
019 */
020 package patterntesting.runtime.log;
021
022 import java.util.*;
023
024 import org.slf4j.*;
025
026 import patterntesting.annotation.check.runtime.NullArgsAllowed;
027 import patterntesting.runtime.util.Converter;
028
029 /**
030 * The Class LogRecorder which is able to record log messages.
031 *
032 * @author <a href="boehm@javatux.de">oliver</a>
033 * @since 09.10.2008
034 * @version $Revision: 1.8 $
035 */
036 public final class LogRecorder implements Logger {
037
038 private final List<String> objects = new ArrayList<String>();
039 private final List<Throwable> exceptions = new ArrayList<Throwable>();
040 private int n = 0;
041
042 /**
043 * Debug.
044 *
045 * @param arg0 the arg0
046 * @see Logger#debug(String)
047 */
048 public void debug(final String arg0) {
049 this.record(arg0);
050 }
051
052 /**
053 * Debug.
054 *
055 * @param arg0 the arg0
056 * @param arg1 the arg1
057 * @see Logger#debug(String, Throwable)
058 */
059 public void debug(final String arg0, final Throwable arg1) {
060 this.record(arg0, arg1);
061 }
062
063 /**
064 * Error.
065 *
066 * @param arg0 the arg0
067 * @see Logger#error(String)
068 */
069 public void error(final String arg0) {
070 this.record(arg0);
071 }
072
073 /**
074 * Error.
075 *
076 * @param arg0 the arg0
077 * @param arg1 the arg1
078 * @see Logger#error(String, Throwable)
079 */
080 public void error(final String arg0, final Throwable arg1) {
081 this.record(arg0, arg1);
082 }
083
084 /**
085 * Info.
086 *
087 * @param arg0 the arg0
088 * @see Logger#info(String)
089 */
090 public void info(final String arg0) {
091 this.record(arg0);
092 }
093
094 /**
095 * Info.
096 *
097 * @param arg0 the arg0
098 * @param arg1 the arg1
099 * @see Logger#info(String, Throwable)
100 */
101 public void info(final String arg0, final Throwable arg1) {
102 this.record(arg0, arg1);
103 }
104
105 /**
106 * Checks if is debug enabled.
107 *
108 * @return true, if is debug enabled
109 * @see Logger#isDebugEnabled()
110 */
111 public boolean isDebugEnabled() {
112 return false;
113 }
114
115 /**
116 * Checks if is error enabled.
117 *
118 * @return true, if is error enabled
119 * @see Logger#isErrorEnabled()
120 */
121 public boolean isErrorEnabled() {
122 return false;
123 }
124
125 /**
126 * Checks if is info enabled.
127 *
128 * @return true, if is info enabled
129 * @see Logger#isInfoEnabled()
130 */
131 public boolean isInfoEnabled() {
132 return false;
133 }
134
135 /**
136 * Checks if is trace enabled.
137 *
138 * @return true, if is trace enabled
139 * @see Logger#isTraceEnabled()
140 */
141 public boolean isTraceEnabled() {
142 return false;
143 }
144
145 /**
146 * Checks if is warn enabled.
147 *
148 * @return true, if is warn enabled
149 * @see Logger#isWarnEnabled()
150 */
151 public boolean isWarnEnabled() {
152 return false;
153 }
154
155 /**
156 * Trace.
157 *
158 * @param arg0 the arg0
159 * @see Logger#trace(String)
160 */
161 public void trace(final String arg0) {
162 this.record(arg0);
163 }
164
165 /**
166 * Trace.
167 *
168 * @param arg0 the arg0
169 * @param arg1 the arg1
170 * @see Logger#trace(String, Throwable)
171 */
172 public void trace(final String arg0, final Throwable arg1) {
173 this.record(arg0, arg1);
174 }
175
176 /**
177 * Warn.
178 *
179 * @param arg0 the arg0
180 * @see Logger#warn(String)
181 */
182 public void warn(final String arg0) {
183 this.record(arg0);
184 }
185
186 /**
187 * Warn.
188 *
189 * @param arg0 the arg0
190 * @param arg1 the arg1
191 * @see Logger#warn(String, Throwable)
192 */
193 public void warn(final String arg0, final Throwable arg1) {
194 this.record(arg0, arg1);
195 }
196
197 /**
198 * Record.
199 *
200 * @param obj the obj
201 */
202 private void record(final String obj) {
203 this.objects.add(obj);
204 }
205
206 /**
207 * Record.
208 *
209 * @param obj the obj
210 * @param t the t
211 */
212 @NullArgsAllowed
213 private synchronized void record(final String msg, final Object obj) {
214 this.objects.add(msg + ", " + obj);
215 }
216
217 /**
218 * Record.
219 *
220 * @param obj the obj
221 * @param t the t
222 */
223 @NullArgsAllowed
224 private synchronized void record(final String msg, final Object[] objs) {
225 this.objects.add(msg + ", " + Converter.toString(objs));
226 }
227
228 /**
229 * Record.
230 *
231 * @param arg0 the arg0
232 * @param arg1 the arg1
233 */
234 @NullArgsAllowed
235 private synchronized void record(final Marker arg0, final String arg1) {
236 this.objects.add(arg0 + ": " + arg1);
237 }
238
239 /**
240 * Record.
241 *
242 * @param arg0 the arg0
243 * @param arg1 the arg1
244 * @param arg2 the arg2
245 */
246 @NullArgsAllowed
247 private synchronized void record(final String arg0, final Object arg1, final Object arg2) {
248 this.objects.add(arg0 + ", " + arg1 + ", " + arg2);
249 }
250
251 /**
252 * Record.
253 *
254 * @param arg0 the arg0
255 * @param arg1 the arg1
256 * @param arg2 the arg2
257 */
258 @NullArgsAllowed
259 private synchronized void record(final Marker arg0, final String arg1, final Object arg2) {
260 this.objects.add(arg0 + ": " + arg1 + ", " + arg2);
261 }
262
263 /**
264 * Record.
265 *
266 * @param arg0 the arg0
267 * @param arg1 the arg1
268 * @param arg2 the arg2
269 * @param arg3 the arg3
270 */
271 @NullArgsAllowed
272 private synchronized void record(final Marker arg0, final String arg1, final Object arg2, final Object arg3) {
273 this.objects.add(arg0 + ": " + arg1 + ", " + arg2 + ", " + arg3);
274 }
275
276 /**
277 * Record.
278 *
279 * @param obj the obj
280 * @param t the t
281 */
282 @NullArgsAllowed
283 private synchronized void record(final String obj, final Throwable t) {
284 this.objects.add(obj);
285 this.exceptions.add(t);
286 this.n++;
287 }
288
289 /**
290 * Record.
291 *
292 * @param arg0 the arg0
293 * @param arg1 the arg1
294 * @param arg2 the arg2
295 */
296 @NullArgsAllowed
297 private synchronized void record(final Marker arg0, final String arg1, final Throwable arg2) {
298 this.record(arg0 + ": " + arg1, arg2);
299 }
300
301 /**
302 * Gets the text.
303 *
304 * @return the text
305 */
306 public String getText() {
307 StringBuilder text = new StringBuilder();
308 for (Object obj : this.objects) {
309 text.append(obj);
310 }
311 return text.toString().trim();
312 }
313
314 /**
315 * Gets the record.
316 *
317 * @return the record
318 */
319 public String getRecord() {
320 return getText();
321 }
322
323 /**
324 * Gets the number of records.
325 *
326 * @return the number of records
327 */
328 public int getNumberOfRecords() {
329 return n;
330 }
331
332 /**
333 * To string.
334 *
335 * @return the string
336 * @see java.lang.Object#toString()
337 */
338 @Override
339 public String toString() {
340 String classname = this.getClass().getSimpleName();
341 if (n == 1) {
342 return classname + "(\"" + getRecord() + "\")";
343 } else {
344 return classname + " with " + n + " records";
345 }
346 }
347
348
349
350 ///// new methods after switch from commons-logging to SLF4J //////////
351
352 /**
353 * Debug.
354 *
355 * @param arg0 the arg0
356 * @param arg1 the arg1
357 * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object)
358 */
359 public void debug(final String arg0, final Object arg1) {
360 this.record(arg0, arg1);
361 }
362
363 /**
364 * Debug.
365 *
366 * @param arg0 the arg0
367 * @param arg1 the arg1
368 * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object[])
369 */
370 public void debug(final String arg0, final Object... arg1) {
371 this.record(arg0, arg1);
372 }
373
374 /**
375 * Debug.
376 *
377 * @param arg0 the arg0
378 * @param arg1 the arg1
379 * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String)
380 */
381 public void debug(final Marker arg0, final String arg1) {
382 this.record(arg0, arg1);
383 }
384
385 /**
386 * Debug.
387 *
388 * @param arg0 the arg0
389 * @param arg1 the arg1
390 * @param arg2 the arg2
391 * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object, java.lang.Object)
392 */
393 public void debug(final String arg0, final Object arg1, final Object arg2) {
394 this.record(arg0, arg1, arg2);
395 }
396
397 /**
398 * Debug.
399 *
400 * @param arg0 the arg0
401 * @param arg1 the arg1
402 * @param arg2 the arg2
403 * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object)
404 */
405 public void debug(final Marker arg0, final String arg1, final Object arg2) {
406 this.record(arg0, arg1, arg2);
407 }
408
409 /**
410 * Debug.
411 *
412 * @param arg0 the arg0
413 * @param arg1 the arg1
414 * @param arg2 the arg2
415 * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object[])
416 */
417 public void debug(final Marker arg0, final String arg1, final Object... arg2) {
418 this.record(arg0, arg1, arg2);
419 }
420
421 /**
422 * Debug.
423 *
424 * @param arg0 the arg0
425 * @param arg1 the arg1
426 * @param arg2 the arg2
427 * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
428 */
429 public void debug(final Marker arg0, final String arg1, final Throwable arg2) {
430 this.record(arg0, arg1, arg2);
431 }
432
433 /**
434 * Debug.
435 *
436 * @param arg0 the arg0
437 * @param arg1 the arg1
438 * @param arg2 the arg2
439 * @param arg3 the arg3
440 * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
441 */
442 public void debug(final Marker arg0, final String arg1, final Object arg2, final Object arg3) {
443 this.record(arg0, arg1, arg2, arg3);
444 }
445
446 /**
447 * Error.
448 *
449 * @param arg0 the arg0
450 * @param arg1 the arg1
451 * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object)
452 */
453 public void error(final String arg0, final Object arg1) {
454 this.record(arg0, arg1);
455 }
456
457 /**
458 * Error.
459 *
460 * @param arg0 the arg0
461 * @param arg1 the arg1
462 * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object[])
463 */
464 public void error(final String arg0, final Object... arg1) {
465 this.record(arg0, arg1);
466 }
467
468 /**
469 * Error.
470 *
471 * @param arg0 the arg0
472 * @param arg1 the arg1
473 * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String)
474 */
475 public void error(final Marker arg0, final String arg1) {
476 this.record(arg0, arg1);
477 }
478
479 /**
480 * Error.
481 *
482 * @param arg0 the arg0
483 * @param arg1 the arg1
484 * @param arg2 the arg2
485 * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object, java.lang.Object)
486 */
487 public void error(final String arg0, final Object arg1, final Object arg2) {
488 this.record(arg0, arg1, arg2);
489 }
490
491 /**
492 * Error.
493 *
494 * @param arg0 the arg0
495 * @param arg1 the arg1
496 * @param arg2 the arg2
497 * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object)
498 */
499 public void error(final Marker arg0, final String arg1, final Object arg2) {
500 this.record(arg0, arg1, arg2);
501 }
502
503 /**
504 * Error.
505 *
506 * @param arg0 the arg0
507 * @param arg1 the arg1
508 * @param arg2 the arg2
509 * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object[])
510 */
511 public void error(final Marker arg0, final String arg1, final Object... arg2) {
512 this.record(arg0, arg1, arg2);
513 }
514
515 /**
516 * Error.
517 *
518 * @param arg0 the arg0
519 * @param arg1 the arg1
520 * @param arg2 the arg2
521 * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
522 */
523 public void error(final Marker arg0, final String arg1, final Throwable arg2) {
524 this.record(arg0, arg1, arg2);
525 }
526
527 /**
528 * Error.
529 *
530 * @param arg0 the arg0
531 * @param arg1 the arg1
532 * @param arg2 the arg2
533 * @param arg3 the arg3
534 * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
535 */
536 public void error(final Marker arg0, final String arg1, final Object arg2, final Object arg3) {
537 this.record(arg0, arg1, arg2, arg3);
538 }
539
540 /**
541 * Gets the name.
542 *
543 * @return the name
544 * @see org.slf4j.Logger#getName()
545 */
546 public String getName() {
547 return "LogRecorder";
548 }
549
550 /**
551 * Info.
552 *
553 * @param arg0 the arg0
554 * @param arg1 the arg1
555 * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object)
556 */
557 public void info(final String arg0, final Object arg1) {
558 this.record(arg0, arg1);
559 }
560
561 /**
562 * Info.
563 *
564 * @param arg0 the arg0
565 * @param arg1 the arg1
566 * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object[])
567 */
568 public void info(final String arg0, final Object... arg1) {
569 this.record(arg0, arg1);
570 }
571
572 /**
573 * Info.
574 *
575 * @param arg0 the arg0
576 * @param arg1 the arg1
577 * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String)
578 */
579 public void info(final Marker arg0, final String arg1) {
580 this.record(arg0, arg1);
581 }
582
583 /**
584 * Info.
585 *
586 * @param arg0 the arg0
587 * @param arg1 the arg1
588 * @param arg2 the arg2
589 * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object, java.lang.Object)
590 */
591 public void info(final String arg0, final Object arg1, final Object arg2) {
592 this.record(arg0, arg1, arg2);
593 }
594
595 /**
596 * Info.
597 *
598 * @param arg0 the arg0
599 * @param arg1 the arg1
600 * @param arg2 the arg2
601 * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object)
602 */
603 public void info(final Marker arg0, final String arg1, final Object arg2) {
604 this.record(arg0, arg1, arg2);
605 }
606
607 /**
608 * Info.
609 *
610 * @param arg0 the arg0
611 * @param arg1 the arg1
612 * @param arg2 the arg2
613 * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object[])
614 */
615 public void info(final Marker arg0, final String arg1, final Object... arg2) {
616 this.record(arg0, arg1, arg2);
617 }
618
619 /**
620 * Info.
621 *
622 * @param arg0 the arg0
623 * @param arg1 the arg1
624 * @param arg2 the arg2
625 * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
626 */
627 public void info(final Marker arg0, final String arg1, final Throwable arg2) {
628 this.record(arg0, arg1, arg2);
629 }
630
631 /**
632 * Info.
633 *
634 * @param arg0 the arg0
635 * @param arg1 the arg1
636 * @param arg2 the arg2
637 * @param arg3 the arg3
638 * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
639 */
640 public void info(final Marker arg0, final String arg1, final Object arg2, final Object arg3) {
641 this.record(arg0, arg1, arg2, arg3);
642 }
643
644 /**
645 * Checks if is debug enabled.
646 *
647 * @param arg0 the arg0
648 * @return true, if is debug enabled
649 * @see org.slf4j.Logger#isDebugEnabled(org.slf4j.Marker)
650 */
651 public boolean isDebugEnabled(final Marker arg0) {
652 return false;
653 }
654
655 /**
656 * Checks if is error enabled.
657 *
658 * @param arg0 the arg0
659 * @return true, if is error enabled
660 * @see org.slf4j.Logger#isErrorEnabled(org.slf4j.Marker)
661 */
662 public boolean isErrorEnabled(final Marker arg0) {
663 return false;
664 }
665
666 /**
667 * Checks if is info enabled.
668 *
669 * @param arg0 the arg0
670 * @return true, if is info enabled
671 * @see org.slf4j.Logger#isInfoEnabled(org.slf4j.Marker)
672 */
673 public boolean isInfoEnabled(final Marker arg0) {
674 return false;
675 }
676
677 /**
678 * Checks if is trace enabled.
679 *
680 * @param arg0 the arg0
681 * @return true, if is trace enabled
682 * @see org.slf4j.Logger#isTraceEnabled(org.slf4j.Marker)
683 */
684 public boolean isTraceEnabled(final Marker arg0) {
685 return false;
686 }
687
688 /**
689 * Checks if is warn enabled.
690 *
691 * @param arg0 the arg0
692 * @return true, if is warn enabled
693 * @see org.slf4j.Logger#isWarnEnabled(org.slf4j.Marker)
694 */
695 public boolean isWarnEnabled(final Marker arg0) {
696 return false;
697 }
698
699 /**
700 * Trace.
701 *
702 * @param arg0 the arg0
703 * @param arg1 the arg1
704 * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object)
705 */
706 public void trace(final String arg0, final Object arg1) {
707 this.record(arg0, arg1);
708 }
709
710 /**
711 * Trace.
712 *
713 * @param arg0 the arg0
714 * @param arg1 the arg1
715 * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object[])
716 */
717 public void trace(final String arg0, final Object... arg1) {
718 this.record(arg0, arg1);
719 }
720
721 /**
722 * Trace.
723 *
724 * @param arg0 the arg0
725 * @param arg1 the arg1
726 * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String)
727 */
728 public void trace(final Marker arg0, final String arg1) {
729 this.record(arg0, arg1);
730 }
731
732 /**
733 * Trace.
734 *
735 * @param arg0 the arg0
736 * @param arg1 the arg1
737 * @param arg2 the arg2
738 * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object, java.lang.Object)
739 */
740 public void trace(final String arg0, final Object arg1, final Object arg2) {
741 this.record(arg0, arg1, arg2);
742 }
743
744 /**
745 * Trace.
746 *
747 * @param arg0 the arg0
748 * @param arg1 the arg1
749 * @param arg2 the arg2
750 * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object)
751 */
752 public void trace(final Marker arg0, final String arg1, final Object arg2) {
753 this.record(arg0, arg1, arg2);
754 }
755
756 /**
757 * Trace.
758 *
759 * @param arg0 the arg0
760 * @param arg1 the arg1
761 * @param arg2 the arg2
762 * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object[])
763 */
764 public void trace(final Marker arg0, final String arg1, final Object... arg2) {
765 this.record(arg0, arg1, arg2);
766 }
767
768 /**
769 * Trace.
770 *
771 * @param arg0 the arg0
772 * @param arg1 the arg1
773 * @param arg2 the arg2
774 * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
775 */
776 public void trace(final Marker arg0, final String arg1, final Throwable arg2) {
777 this.record(arg0, arg1, arg2);
778 }
779
780 /**
781 * Trace.
782 *
783 * @param arg0 the arg0
784 * @param arg1 the arg1
785 * @param arg2 the arg2
786 * @param arg3 the arg3
787 * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
788 */
789 public void trace(final Marker arg0, final String arg1, final Object arg2, final Object arg3) {
790 this.record(arg0, arg1, arg2, arg3);
791 }
792
793 /**
794 * Warn.
795 *
796 * @param arg0 the arg0
797 * @param arg1 the arg1
798 * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object)
799 */
800 public void warn(final String arg0, final Object arg1) {
801 this.record(arg0, arg1);
802 }
803
804 /**
805 * Warn.
806 *
807 * @param arg0 the arg0
808 * @param arg1 the arg1
809 * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object[])
810 */
811 public void warn(final String arg0, final Object... arg1) {
812 this.record(arg0, arg1);
813 }
814
815 /**
816 * Warn.
817 *
818 * @param arg0 the arg0
819 * @param arg1 the arg1
820 * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String)
821 */
822 public void warn(final Marker arg0, final String arg1) {
823 this.record(arg0, arg1);
824 }
825
826 /**
827 * Warn.
828 *
829 * @param arg0 the arg0
830 * @param arg1 the arg1
831 * @param arg2 the arg2
832 * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object, java.lang.Object)
833 */
834 public void warn(final String arg0, final Object arg1, final Object arg2) {
835 this.record(arg0, arg1, arg2);
836 }
837
838 /**
839 * Warn.
840 *
841 * @param arg0 the arg0
842 * @param arg1 the arg1
843 * @param arg2 the arg2
844 * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object)
845 */
846 public void warn(final Marker arg0, final String arg1, final Object arg2) {
847 this.record(arg0, arg1, arg2);
848 }
849
850 /**
851 * Warn.
852 *
853 * @param arg0 the arg0
854 * @param arg1 the arg1
855 * @param arg2 the arg2
856 * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object[])
857 */
858 public void warn(final Marker arg0, final String arg1, final Object... arg2) {
859 this.record(arg0, arg1, arg2);
860 }
861
862 /**
863 * Warn.
864 *
865 * @param arg0 the arg0
866 * @param arg1 the arg1
867 * @param arg2 the arg2
868 * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
869 */
870 public void warn(final Marker arg0, final String arg1, final Throwable arg2) {
871 this.record(arg0, arg1, arg2);
872 }
873
874 /**
875 * Warn.
876 *
877 * @param arg0 the arg0
878 * @param arg1 the arg1
879 * @param arg2 the arg2
880 * @param arg3 the arg3
881 * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
882 */
883 public void warn(final Marker arg0, final String arg1, final Object arg2, final Object arg3) {
884 this.record(arg0, arg1, arg2, arg3);
885 }
886
887 }