001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache license, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the license for the specific language governing permissions and 015 * limitations under the license. 016 */ 017package org.apache.logging.log4j.spi; 018 019import java.io.Serializable; 020 021import org.apache.logging.log4j.Level; 022import org.apache.logging.log4j.Marker; 023import org.apache.logging.log4j.MarkerManager; 024import org.apache.logging.log4j.message.Message; 025import org.apache.logging.log4j.message.MessageFactory; 026import org.apache.logging.log4j.message.ParameterizedMessageFactory; 027import org.apache.logging.log4j.message.StringFormattedMessage; 028import org.apache.logging.log4j.status.StatusLogger; 029import org.apache.logging.log4j.util.LambdaUtil; 030import org.apache.logging.log4j.util.MessageSupplier; 031import org.apache.logging.log4j.util.Supplier; 032 033/** 034 * Base implementation of a Logger. It is highly recommended that any Logger implementation extend this class. 035 */ 036public abstract class AbstractLogger implements ExtendedLogger, Serializable { 037 038 private static final long serialVersionUID = 2L; 039 040 /** 041 * Marker for flow tracing. 042 */ 043 public static final Marker FLOW_MARKER = MarkerManager.getMarker("FLOW"); 044 045 /** 046 * Marker for method entry tracing. 047 */ 048 public static final Marker ENTRY_MARKER = MarkerManager.getMarker("ENTRY").setParents(FLOW_MARKER); 049 050 /** 051 * Marker for method exit tracing. 052 */ 053 public static final Marker EXIT_MARKER = MarkerManager.getMarker("EXIT").setParents(FLOW_MARKER); 054 055 /** 056 * Marker for exception tracing. 057 */ 058 public static final Marker EXCEPTION_MARKER = MarkerManager.getMarker("EXCEPTION"); 059 060 /** 061 * Marker for throwing exceptions. 062 */ 063 public static final Marker THROWING_MARKER = MarkerManager.getMarker("THROWING").setParents(EXCEPTION_MARKER); 064 065 /** 066 * Marker for catching exceptions. 067 */ 068 public static final Marker CATCHING_MARKER = MarkerManager.getMarker("CATCHING").setParents(EXCEPTION_MARKER); 069 070 /** 071 * The default MessageFactory class. 072 */ 073 public static final Class<? extends MessageFactory> DEFAULT_MESSAGE_FACTORY_CLASS = ParameterizedMessageFactory.class; 074 075 private static final String FQCN = AbstractLogger.class.getName(); 076 077 private static final String THROWING = "throwing"; 078 079 private static final String CATCHING = "catching"; 080 081 /** 082 * Checks that the message factory a logger was created with is the same as the given messageFactory. If they are 083 * different log a warning to the {@linkplain StatusLogger}. A null MessageFactory translates to the default 084 * MessageFactory {@link #DEFAULT_MESSAGE_FACTORY_CLASS}. 085 * 086 * @param logger The logger to check 087 * @param messageFactory The message factory to check. 088 */ 089 public static void checkMessageFactory(final ExtendedLogger logger, final MessageFactory messageFactory) { 090 final String name = logger.getName(); 091 final MessageFactory loggerMessageFactory = logger.getMessageFactory(); 092 if (messageFactory != null && !loggerMessageFactory.equals(messageFactory)) { 093 StatusLogger.getLogger().warn( 094 "The Logger {} was created with the message factory {} and is now requested with the " 095 + "message factory {}, which may create log events with unexpected formatting.", name, 096 loggerMessageFactory, messageFactory); 097 } else if (messageFactory == null && !loggerMessageFactory.getClass().equals(DEFAULT_MESSAGE_FACTORY_CLASS)) { 098 StatusLogger 099 .getLogger() 100 .warn("The Logger {} was created with the message factory {} and is now requested with a null " 101 + "message factory (defaults to {}), which may create log events with unexpected formatting.", 102 name, loggerMessageFactory, DEFAULT_MESSAGE_FACTORY_CLASS.getName()); 103 } 104 } 105 106 private final String name; 107 108 private final MessageFactory messageFactory; 109 110 /** 111 * Creates a new logger named after this class (or subclass). 112 */ 113 public AbstractLogger() { 114 this.name = getClass().getName(); 115 this.messageFactory = createDefaultMessageFactory(); 116 } 117 118 /** 119 * Creates a new named logger. 120 * 121 * @param name the logger name 122 */ 123 public AbstractLogger(final String name) { 124 this.name = name; 125 this.messageFactory = createDefaultMessageFactory(); 126 } 127 128 /** 129 * Creates a new named logger with a particular {@link MessageFactory}. 130 * 131 * @param name the logger name 132 * @param messageFactory the message factory, if null then use the default message factory. 133 */ 134 public AbstractLogger(final String name, final MessageFactory messageFactory) { 135 this.name = name; 136 this.messageFactory = messageFactory == null ? createDefaultMessageFactory() : messageFactory; 137 } 138 139 @Override 140 public void catching(final Level level, final Throwable t) { 141 catching(FQCN, level, t); 142 } 143 144 /** 145 * Logs a Throwable that has been caught with location information. 146 * 147 * @param fqcn The fully qualified class name of the <b>caller</b>. 148 * @param level The logging level. 149 * @param t The Throwable. 150 */ 151 protected void catching(final String fqcn, final Level level, final Throwable t) { 152 if (isEnabled(level, CATCHING_MARKER, (Object) null, null)) { 153 logMessage(fqcn, level, CATCHING_MARKER, catchingMsg(t), t); 154 } 155 } 156 157 @Override 158 public void catching(final Throwable t) { 159 if (isEnabled(Level.ERROR, CATCHING_MARKER, (Object) null, null)) { 160 logMessage(FQCN, Level.ERROR, CATCHING_MARKER, catchingMsg(t), t); 161 } 162 } 163 164 protected Message catchingMsg(final Throwable t) { 165 return messageFactory.newMessage(CATCHING); 166 } 167 168 private MessageFactory createDefaultMessageFactory() { 169 try { 170 return DEFAULT_MESSAGE_FACTORY_CLASS.newInstance(); 171 } catch (final InstantiationException e) { 172 throw new IllegalStateException(e); 173 } catch (final IllegalAccessException e) { 174 throw new IllegalStateException(e); 175 } 176 } 177 178 @Override 179 public void debug(final Marker marker, final Message msg) { 180 logIfEnabled(FQCN, Level.DEBUG, marker, msg, null); 181 } 182 183 @Override 184 public void debug(final Marker marker, final Message msg, final Throwable t) { 185 logIfEnabled(FQCN, Level.DEBUG, marker, msg, t); 186 } 187 188 @Override 189 public void debug(final Marker marker, final Object message) { 190 logIfEnabled(FQCN, Level.DEBUG, marker, message, null); 191 } 192 193 @Override 194 public void debug(final Marker marker, final Object message, final Throwable t) { 195 logIfEnabled(FQCN, Level.DEBUG, marker, message, t); 196 } 197 198 @Override 199 public void debug(final Marker marker, final String message) { 200 logIfEnabled(FQCN, Level.DEBUG, marker, message, (Throwable) null); 201 } 202 203 @Override 204 public void debug(final Marker marker, final String message, final Object... params) { 205 logIfEnabled(FQCN, Level.DEBUG, marker, message, params); 206 } 207 208 @Override 209 public void debug(final Marker marker, final String message, final Throwable t) { 210 logIfEnabled(FQCN, Level.DEBUG, marker, message, t); 211 } 212 213 @Override 214 public void debug(final Message msg) { 215 logIfEnabled(FQCN, Level.DEBUG, null, msg, null); 216 } 217 218 @Override 219 public void debug(final Message msg, final Throwable t) { 220 logIfEnabled(FQCN, Level.DEBUG, null, msg, t); 221 } 222 223 @Override 224 public void debug(final Object message) { 225 logIfEnabled(FQCN, Level.DEBUG, null, message, null); 226 } 227 228 @Override 229 public void debug(final Object message, final Throwable t) { 230 logIfEnabled(FQCN, Level.DEBUG, null, message, t); 231 } 232 233 @Override 234 public void debug(final String message) { 235 logIfEnabled(FQCN, Level.DEBUG, null, message, (Throwable) null); 236 } 237 238 @Override 239 public void debug(final String message, final Object... params) { 240 logIfEnabled(FQCN, Level.DEBUG, null, message, params); 241 } 242 243 @Override 244 public void debug(final String message, final Throwable t) { 245 logIfEnabled(FQCN, Level.DEBUG, null, message, t); 246 } 247 248 @Override 249 public void debug(final Supplier<?> msgSupplier) { 250 logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, (Throwable) null); 251 } 252 253 @Override 254 public void debug(final Supplier<?> msgSupplier, final Throwable t) { 255 logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t); 256 } 257 258 @Override 259 public void debug(final Marker marker, final Supplier<?> msgSupplier) { 260 logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, (Throwable) null); 261 } 262 263 @Override 264 public void debug(final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 265 logIfEnabled(FQCN, Level.DEBUG, marker, message, paramSuppliers); 266 } 267 268 @Override 269 public void debug(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 270 logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t); 271 } 272 273 @Override 274 public void debug(final String message, final Supplier<?>... paramSuppliers) { 275 logIfEnabled(FQCN, Level.DEBUG, null, message, paramSuppliers); 276 } 277 278 @Override 279 public void debug(final Marker marker, final MessageSupplier msgSupplier) { 280 logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, (Throwable) null); 281 } 282 283 @Override 284 public void debug(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 285 logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t); 286 } 287 288 @Override 289 public void debug(final MessageSupplier msgSupplier) { 290 logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, (Throwable) null); 291 } 292 293 @Override 294 public void debug(final MessageSupplier msgSupplier, final Throwable t) { 295 logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t); 296 } 297 298 @Override 299 public void entry() { 300 entry(FQCN); 301 } 302 303 @Override 304 public void entry(final Object... params) { 305 entry(FQCN, params); 306 } 307 308 /** 309 * Logs entry to a method with location information. 310 * 311 * @param fqcn The fully qualified class name of the <b>caller</b>. 312 * @param params The parameters to the method. 313 */ 314 protected void entry(final String fqcn, final Object... params) { 315 if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) { 316 logIfEnabled(fqcn, Level.TRACE, ENTRY_MARKER, entryMsg(params.length, params), null); 317 } 318 } 319 320 protected Message entryMsg(final int count, final Object... params) { 321 if (count == 0) { 322 return messageFactory.newMessage("entry"); 323 } 324 final StringBuilder sb = new StringBuilder("entry params("); 325 int i = 0; 326 for (final Object parm : params) { 327 if (parm != null) { 328 sb.append(parm.toString()); 329 } else { 330 sb.append("null"); 331 } 332 if (++i < params.length) { 333 sb.append(", "); 334 } 335 } 336 sb.append(')'); 337 return messageFactory.newMessage(sb.toString()); 338 } 339 340 @Override 341 public void error(final Marker marker, final Message msg) { 342 logIfEnabled(FQCN, Level.ERROR, marker, msg, null); 343 } 344 345 @Override 346 public void error(final Marker marker, final Message msg, final Throwable t) { 347 logIfEnabled(FQCN, Level.ERROR, marker, msg, t); 348 } 349 350 @Override 351 public void error(final Marker marker, final Object message) { 352 logIfEnabled(FQCN, Level.ERROR, marker, message, null); 353 } 354 355 @Override 356 public void error(final Marker marker, final Object message, final Throwable t) { 357 logIfEnabled(FQCN, Level.ERROR, marker, message, t); 358 } 359 360 @Override 361 public void error(final Marker marker, final String message) { 362 logIfEnabled(FQCN, Level.ERROR, marker, message, (Throwable) null); 363 } 364 365 @Override 366 public void error(final Marker marker, final String message, final Object... params) { 367 logIfEnabled(FQCN, Level.ERROR, marker, message, params); 368 } 369 370 @Override 371 public void error(final Marker marker, final String message, final Throwable t) { 372 logIfEnabled(FQCN, Level.ERROR, marker, message, t); 373 } 374 375 @Override 376 public void error(final Message msg) { 377 logIfEnabled(FQCN, Level.ERROR, null, msg, null); 378 } 379 380 @Override 381 public void error(final Message msg, final Throwable t) { 382 logIfEnabled(FQCN, Level.ERROR, null, msg, t); 383 } 384 385 @Override 386 public void error(final Object message) { 387 logIfEnabled(FQCN, Level.ERROR, null, message, null); 388 } 389 390 @Override 391 public void error(final Object message, final Throwable t) { 392 logIfEnabled(FQCN, Level.ERROR, null, message, t); 393 } 394 395 @Override 396 public void error(final String message) { 397 logIfEnabled(FQCN, Level.ERROR, null, message, (Throwable) null); 398 } 399 400 @Override 401 public void error(final String message, final Object... params) { 402 logIfEnabled(FQCN, Level.ERROR, null, message, params); 403 } 404 405 @Override 406 public void error(final String message, final Throwable t) { 407 logIfEnabled(FQCN, Level.ERROR, null, message, t); 408 } 409 410 @Override 411 public void error(final Supplier<?> msgSupplier) { 412 logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, (Throwable) null); 413 } 414 415 @Override 416 public void error(final Supplier<?> msgSupplier, final Throwable t) { 417 logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t); 418 } 419 420 @Override 421 public void error(final Marker marker, final Supplier<?> msgSupplier) { 422 logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, (Throwable) null); 423 } 424 425 @Override 426 public void error(final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 427 logIfEnabled(FQCN, Level.ERROR, marker, message, paramSuppliers); 428 } 429 430 @Override 431 public void error(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 432 logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t); 433 } 434 435 @Override 436 public void error(final String message, final Supplier<?>... paramSuppliers) { 437 logIfEnabled(FQCN, Level.ERROR, null, message, paramSuppliers); 438 } 439 440 @Override 441 public void error(final Marker marker, final MessageSupplier msgSupplier) { 442 logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, (Throwable) null); 443 } 444 445 @Override 446 public void error(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 447 logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t); 448 } 449 450 @Override 451 public void error(final MessageSupplier msgSupplier) { 452 logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, (Throwable) null); 453 } 454 455 @Override 456 public void error(final MessageSupplier msgSupplier, final Throwable t) { 457 logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t); 458 } 459 460 @Override 461 public void exit() { 462 exit(FQCN, null); 463 } 464 465 @Override 466 public <R> R exit(final R result) { 467 return exit(FQCN, result); 468 } 469 470 /** 471 * Logs exiting from a method with the result and location information. 472 * 473 * @param fqcn The fully qualified class name of the <b>caller</b>. 474 * @param <R> The type of the parameter and object being returned. 475 * @param result The result being returned from the method call. 476 * @return the return value passed to this method. 477 */ 478 protected <R> R exit(final String fqcn, final R result) { 479 if (isEnabled(Level.TRACE, EXIT_MARKER, (Object) null, null)) { 480 logIfEnabled(fqcn, Level.TRACE, EXIT_MARKER, exitMsg(result), null); 481 } 482 return result; 483 } 484 485 protected Message exitMsg(final Object result) { 486 if (result == null) { 487 return messageFactory.newMessage("exit"); 488 } 489 return messageFactory.newMessage("exit with(" + result + ')'); 490 } 491 492 @Override 493 public void fatal(final Marker marker, final Message msg) { 494 logIfEnabled(FQCN, Level.FATAL, marker, msg, null); 495 } 496 497 @Override 498 public void fatal(final Marker marker, final Message msg, final Throwable t) { 499 logIfEnabled(FQCN, Level.FATAL, marker, msg, t); 500 } 501 502 @Override 503 public void fatal(final Marker marker, final Object message) { 504 logIfEnabled(FQCN, Level.FATAL, marker, message, null); 505 } 506 507 @Override 508 public void fatal(final Marker marker, final Object message, final Throwable t) { 509 logIfEnabled(FQCN, Level.FATAL, marker, message, t); 510 } 511 512 @Override 513 public void fatal(final Marker marker, final String message) { 514 logIfEnabled(FQCN, Level.FATAL, marker, message, (Throwable) null); 515 } 516 517 @Override 518 public void fatal(final Marker marker, final String message, final Object... params) { 519 logIfEnabled(FQCN, Level.FATAL, marker, message, params); 520 } 521 522 @Override 523 public void fatal(final Marker marker, final String message, final Throwable t) { 524 logIfEnabled(FQCN, Level.FATAL, marker, message, t); 525 } 526 527 @Override 528 public void fatal(final Message msg) { 529 logIfEnabled(FQCN, Level.FATAL, null, msg, null); 530 } 531 532 @Override 533 public void fatal(final Message msg, final Throwable t) { 534 logIfEnabled(FQCN, Level.FATAL, null, msg, t); 535 } 536 537 @Override 538 public void fatal(final Object message) { 539 logIfEnabled(FQCN, Level.FATAL, null, message, null); 540 } 541 542 @Override 543 public void fatal(final Object message, final Throwable t) { 544 logIfEnabled(FQCN, Level.FATAL, null, message, t); 545 } 546 547 @Override 548 public void fatal(final String message) { 549 logIfEnabled(FQCN, Level.FATAL, null, message, (Throwable) null); 550 } 551 552 @Override 553 public void fatal(final String message, final Object... params) { 554 logIfEnabled(FQCN, Level.FATAL, null, message, params); 555 } 556 557 @Override 558 public void fatal(final String message, final Throwable t) { 559 logIfEnabled(FQCN, Level.FATAL, null, message, t); 560 } 561 562 @Override 563 public void fatal(final Supplier<?> msgSupplier) { 564 logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, (Throwable) null); 565 } 566 567 @Override 568 public void fatal(final Supplier<?> msgSupplier, final Throwable t) { 569 logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t); 570 } 571 572 @Override 573 public void fatal(final Marker marker, final Supplier<?> msgSupplier) { 574 logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, (Throwable) null); 575 } 576 577 @Override 578 public void fatal(final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 579 logIfEnabled(FQCN, Level.FATAL, marker, message, paramSuppliers); 580 } 581 582 @Override 583 public void fatal(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 584 logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t); 585 } 586 587 @Override 588 public void fatal(final String message, final Supplier<?>... paramSuppliers) { 589 logIfEnabled(FQCN, Level.FATAL, null, message, paramSuppliers); 590 } 591 592 @Override 593 public void fatal(final Marker marker, final MessageSupplier msgSupplier) { 594 logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, (Throwable) null); 595 } 596 597 @Override 598 public void fatal(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 599 logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t); 600 } 601 602 @Override 603 public void fatal(final MessageSupplier msgSupplier) { 604 logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, (Throwable) null); 605 } 606 607 @Override 608 public void fatal(final MessageSupplier msgSupplier, final Throwable t) { 609 logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t); 610 } 611 612 @Override 613 public MessageFactory getMessageFactory() { 614 return messageFactory; 615 } 616 617 @Override 618 public String getName() { 619 return name; 620 } 621 622 @Override 623 public void info(final Marker marker, final Message msg) { 624 logIfEnabled(FQCN, Level.INFO, marker, msg, null); 625 } 626 627 @Override 628 public void info(final Marker marker, final Message msg, final Throwable t) { 629 logIfEnabled(FQCN, Level.INFO, marker, msg, t); 630 } 631 632 @Override 633 public void info(final Marker marker, final Object message) { 634 logIfEnabled(FQCN, Level.INFO, marker, message, null); 635 } 636 637 @Override 638 public void info(final Marker marker, final Object message, final Throwable t) { 639 logIfEnabled(FQCN, Level.INFO, marker, message, t); 640 } 641 642 @Override 643 public void info(final Marker marker, final String message) { 644 logIfEnabled(FQCN, Level.INFO, marker, message, (Throwable) null); 645 } 646 647 @Override 648 public void info(final Marker marker, final String message, final Object... params) { 649 logIfEnabled(FQCN, Level.INFO, marker, message, params); 650 } 651 652 @Override 653 public void info(final Marker marker, final String message, final Throwable t) { 654 logIfEnabled(FQCN, Level.INFO, marker, message, t); 655 } 656 657 @Override 658 public void info(final Message msg) { 659 logIfEnabled(FQCN, Level.INFO, null, msg, null); 660 } 661 662 @Override 663 public void info(final Message msg, final Throwable t) { 664 logIfEnabled(FQCN, Level.INFO, null, msg, t); 665 } 666 667 @Override 668 public void info(final Object message) { 669 logIfEnabled(FQCN, Level.INFO, null, message, null); 670 } 671 672 @Override 673 public void info(final Object message, final Throwable t) { 674 logIfEnabled(FQCN, Level.INFO, null, message, t); 675 } 676 677 @Override 678 public void info(final String message) { 679 logIfEnabled(FQCN, Level.INFO, null, message, (Throwable) null); 680 } 681 682 @Override 683 public void info(final String message, final Object... params) { 684 logIfEnabled(FQCN, Level.INFO, null, message, params); 685 } 686 687 @Override 688 public void info(final String message, final Throwable t) { 689 logIfEnabled(FQCN, Level.INFO, null, message, t); 690 } 691 692 @Override 693 public void info(final Supplier<?> msgSupplier) { 694 logIfEnabled(FQCN, Level.INFO, null, msgSupplier, (Throwable) null); 695 } 696 697 @Override 698 public void info(final Supplier<?> msgSupplier, final Throwable t) { 699 logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t); 700 } 701 702 @Override 703 public void info(final Marker marker, final Supplier<?> msgSupplier) { 704 logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, (Throwable) null); 705 } 706 707 @Override 708 public void info(final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 709 logIfEnabled(FQCN, Level.INFO, marker, message, paramSuppliers); 710 } 711 712 @Override 713 public void info(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 714 logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t); 715 } 716 717 @Override 718 public void info(final String message, final Supplier<?>... paramSuppliers) { 719 logIfEnabled(FQCN, Level.INFO, null, message, paramSuppliers); 720 } 721 722 @Override 723 public void info(final Marker marker, final MessageSupplier msgSupplier) { 724 logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, (Throwable) null); 725 } 726 727 @Override 728 public void info(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 729 logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t); 730 } 731 732 @Override 733 public void info(final MessageSupplier msgSupplier) { 734 logIfEnabled(FQCN, Level.INFO, null, msgSupplier, (Throwable) null); 735 } 736 737 @Override 738 public void info(final MessageSupplier msgSupplier, final Throwable t) { 739 logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t); 740 } 741 742 @Override 743 public boolean isDebugEnabled() { 744 return isEnabled(Level.DEBUG, null, null); 745 } 746 747 @Override 748 public boolean isDebugEnabled(final Marker marker) { 749 return isEnabled(Level.DEBUG, marker, (Object) null, null); 750 } 751 752 @Override 753 public boolean isEnabled(final Level level) { 754 return isEnabled(level, null, (Object) null, null); 755 } 756 757 @Override 758 public boolean isEnabled(final Level level, final Marker marker) { 759 return isEnabled(level, marker, (Object) null, null); 760 } 761 762 @Override 763 public boolean isErrorEnabled() { 764 return isEnabled(Level.ERROR, null, (Object) null, null); 765 } 766 767 @Override 768 public boolean isErrorEnabled(final Marker marker) { 769 return isEnabled(Level.ERROR, marker, (Object) null, null); 770 } 771 772 @Override 773 public boolean isFatalEnabled() { 774 return isEnabled(Level.FATAL, null, (Object) null, null); 775 } 776 777 @Override 778 public boolean isFatalEnabled(final Marker marker) { 779 return isEnabled(Level.FATAL, marker, (Object) null, null); 780 } 781 782 @Override 783 public boolean isInfoEnabled() { 784 return isEnabled(Level.INFO, null, (Object) null, null); 785 } 786 787 @Override 788 public boolean isInfoEnabled(final Marker marker) { 789 return isEnabled(Level.INFO, marker, (Object) null, null); 790 } 791 792 @Override 793 public boolean isTraceEnabled() { 794 return isEnabled(Level.TRACE, null, (Object) null, null); 795 } 796 797 @Override 798 public boolean isTraceEnabled(final Marker marker) { 799 return isEnabled(Level.TRACE, marker, (Object) null, null); 800 } 801 802 @Override 803 public boolean isWarnEnabled() { 804 return isEnabled(Level.WARN, null, (Object) null, null); 805 } 806 807 @Override 808 public boolean isWarnEnabled(final Marker marker) { 809 return isEnabled(Level.WARN, marker, (Object) null, null); 810 } 811 812 @Override 813 public void log(final Level level, final Marker marker, final Message msg) { 814 logIfEnabled(FQCN, level, marker, msg, (Throwable) null); 815 } 816 817 @Override 818 public void log(final Level level, final Marker marker, final Message msg, final Throwable t) { 819 logIfEnabled(FQCN, level, marker, msg, t); 820 } 821 822 @Override 823 public void log(final Level level, final Marker marker, final Object message) { 824 logIfEnabled(FQCN, level, marker, message, (Throwable) null); 825 } 826 827 @Override 828 public void log(final Level level, final Marker marker, final Object message, final Throwable t) { 829 if (isEnabled(level, marker, message, t)) { 830 logMessage(FQCN, level, marker, message, t); 831 } 832 } 833 834 @Override 835 public void log(final Level level, final Marker marker, final String message) { 836 logIfEnabled(FQCN, level, marker, message, (Throwable) null); 837 } 838 839 @Override 840 public void log(final Level level, final Marker marker, final String message, final Object... params) { 841 logIfEnabled(FQCN, level, marker, message, params); 842 } 843 844 @Override 845 public void log(final Level level, final Marker marker, final String message, final Throwable t) { 846 logIfEnabled(FQCN, level, marker, message, t); 847 } 848 849 @Override 850 public void log(final Level level, final Message msg) { 851 logIfEnabled(FQCN, level, null, msg, null); 852 } 853 854 @Override 855 public void log(final Level level, final Message msg, final Throwable t) { 856 logIfEnabled(FQCN, level, null, msg, t); 857 } 858 859 @Override 860 public void log(final Level level, final Object message) { 861 logIfEnabled(FQCN, level, null, message, null); 862 } 863 864 @Override 865 public void log(final Level level, final Object message, final Throwable t) { 866 logIfEnabled(FQCN, level, null, message, t); 867 } 868 869 @Override 870 public void log(final Level level, final String message) { 871 logIfEnabled(FQCN, level, null, message, (Throwable) null); 872 } 873 874 @Override 875 public void log(final Level level, final String message, final Object... params) { 876 logIfEnabled(FQCN, level, null, message, params); 877 } 878 879 @Override 880 public void log(final Level level, final String message, final Throwable t) { 881 logIfEnabled(FQCN, level, null, message, t); 882 } 883 884 @Override 885 public void log(final Level level, final Supplier<?> msgSupplier) { 886 logIfEnabled(FQCN, level, null, msgSupplier, (Throwable) null); 887 } 888 889 @Override 890 public void log(final Level level, final Supplier<?> msgSupplier, final Throwable t) { 891 logIfEnabled(FQCN, level, null, msgSupplier, t); 892 } 893 894 @Override 895 public void log(final Level level, final Marker marker, final Supplier<?> msgSupplier) { 896 logIfEnabled(FQCN, level, marker, msgSupplier, (Throwable) null); 897 } 898 899 @Override 900 public void log(final Level level, final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 901 logIfEnabled(FQCN, level, marker, message, paramSuppliers); 902 } 903 904 @Override 905 public void log(final Level level, final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 906 logIfEnabled(FQCN, level, marker, msgSupplier, t); 907 } 908 909 @Override 910 public void log(final Level level, final String message, final Supplier<?>... paramSuppliers) { 911 logIfEnabled(FQCN, level, null, message, paramSuppliers); 912 } 913 914 @Override 915 public void log(final Level level, final Marker marker, final MessageSupplier msgSupplier) { 916 logIfEnabled(FQCN, level, marker, msgSupplier, (Throwable) null); 917 } 918 919 @Override 920 public void log(final Level level, final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 921 logIfEnabled(FQCN, level, marker, msgSupplier, t); 922 } 923 924 @Override 925 public void log(final Level level, final MessageSupplier msgSupplier) { 926 logIfEnabled(FQCN, level, null, msgSupplier, (Throwable) null); 927 } 928 929 @Override 930 public void log(final Level level, final MessageSupplier msgSupplier, final Throwable t) { 931 logIfEnabled(FQCN, level, null, msgSupplier, t); 932 } 933 934 @Override 935 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final Message msg, 936 final Throwable t) { 937 if (isEnabled(level, marker, msg, t)) { 938 logMessage(fqcn, level, marker, msg, t); 939 } 940 } 941 942 @Override 943 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, 944 final MessageSupplier msgSupplier, final Throwable t) { 945 if (isEnabled(level, marker, msgSupplier, t)) { 946 logMessage(fqcn, level, marker, msgSupplier, t); 947 } 948 } 949 950 @Override 951 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final Object message, 952 final Throwable t) { 953 if (isEnabled(level, marker, message, t)) { 954 logMessage(fqcn, level, marker, message, t); 955 } 956 } 957 958 @Override 959 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final Supplier<?> msgSupplier, 960 final Throwable t) { 961 if (isEnabled(level, marker, msgSupplier, t)) { 962 logMessage(fqcn, level, marker, msgSupplier, t); 963 } 964 } 965 966 @Override 967 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message) { 968 if (isEnabled(level, marker, message)) { 969 logMessage(fqcn, level, marker, message); 970 } 971 } 972 973 @Override 974 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message, 975 final Supplier<?>... paramSuppliers) { 976 if (isEnabled(level, marker, message)) { 977 logMessage(fqcn, level, marker, message, paramSuppliers); 978 } 979 } 980 981 @Override 982 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message, 983 final Object... params) { 984 if (isEnabled(level, marker, message, params)) { 985 logMessage(fqcn, level, marker, message, params); 986 } 987 } 988 989 @Override 990 public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message, 991 final Throwable t) { 992 if (isEnabled(level, marker, message, t)) { 993 logMessage(fqcn, level, marker, message, t); 994 } 995 } 996 997 protected void logMessage(final String fqcn, final Level level, final Marker marker, final Object message, 998 final Throwable t) { 999 logMessage(fqcn, level, marker, messageFactory.newMessage(message), t); 1000 } 1001 1002 protected void logMessage(final String fqcn, final Level level, final Marker marker, 1003 final MessageSupplier msgSupplier, final Throwable t) { 1004 final Message message = LambdaUtil.get(msgSupplier); 1005 logMessage(fqcn, level, marker, message, t); 1006 } 1007 1008 protected void logMessage(final String fqcn, final Level level, final Marker marker, final Supplier<?> msgSupplier, 1009 final Throwable t) { 1010 final Object message = LambdaUtil.get(msgSupplier); 1011 logMessage(fqcn, level, marker, messageFactory.newMessage(message), t); 1012 } 1013 1014 protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message, 1015 final Throwable t) { 1016 logMessage(fqcn, level, marker, messageFactory.newMessage(message), t); 1017 } 1018 1019 protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message) { 1020 final Message msg = messageFactory.newMessage(message); 1021 logMessage(fqcn, level, marker, msg, msg.getThrowable()); 1022 } 1023 1024 protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message, 1025 final Object... params) { 1026 final Message msg = messageFactory.newMessage(message, params); 1027 logMessage(fqcn, level, marker, msg, msg.getThrowable()); 1028 } 1029 1030 protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message, 1031 final Supplier<?>... paramSuppliers) { 1032 final Message msg = messageFactory.newMessage(message, LambdaUtil.getAll(paramSuppliers)); 1033 logMessage(fqcn, level, marker, msg, msg.getThrowable()); 1034 } 1035 1036 @Override 1037 public void printf(final Level level, final Marker marker, final String format, final Object... params) { 1038 if (isEnabled(level, marker, format, params)) { 1039 final Message msg = new StringFormattedMessage(format, params); 1040 logMessage(FQCN, level, marker, msg, msg.getThrowable()); 1041 } 1042 } 1043 1044 @Override 1045 public void printf(final Level level, final String format, final Object... params) { 1046 if (isEnabled(level, null, format, params)) { 1047 final Message msg = new StringFormattedMessage(format, params); 1048 logMessage(FQCN, level, null, msg, msg.getThrowable()); 1049 } 1050 } 1051 1052 @Override 1053 public <T extends Throwable> T throwing(final T t) { 1054 return throwing(FQCN, Level.ERROR, t); 1055 } 1056 1057 @Override 1058 public <T extends Throwable> T throwing(final Level level, final T t) { 1059 return throwing(FQCN, level, t); 1060 } 1061 1062 /** 1063 * Logs a Throwable to be thrown. 1064 * 1065 * @param <T> the type of the Throwable. 1066 * @param fqcn the fully qualified class name of this Logger implementation. 1067 * @param level The logging Level. 1068 * @param t The Throwable. 1069 * @return the Throwable. 1070 */ 1071 protected <T extends Throwable> T throwing(final String fqcn, final Level level, final T t) { 1072 if (isEnabled(level, THROWING_MARKER, (Object) null, null)) { 1073 logMessage(fqcn, level, THROWING_MARKER, throwingMsg(t), t); 1074 } 1075 return t; 1076 } 1077 1078 protected Message throwingMsg(final Throwable t) { 1079 return messageFactory.newMessage(THROWING); 1080 } 1081 1082 @Override 1083 public void trace(final Marker marker, final Message msg) { 1084 logIfEnabled(FQCN, Level.TRACE, marker, msg, null); 1085 } 1086 1087 @Override 1088 public void trace(final Marker marker, final Message msg, final Throwable t) { 1089 logIfEnabled(FQCN, Level.TRACE, marker, msg, t); 1090 } 1091 1092 @Override 1093 public void trace(final Marker marker, final Object message) { 1094 logIfEnabled(FQCN, Level.TRACE, marker, message, null); 1095 } 1096 1097 @Override 1098 public void trace(final Marker marker, final Object message, final Throwable t) { 1099 logIfEnabled(FQCN, Level.TRACE, marker, message, t); 1100 } 1101 1102 @Override 1103 public void trace(final Marker marker, final String message) { 1104 logIfEnabled(FQCN, Level.TRACE, marker, message, (Throwable) null); 1105 } 1106 1107 @Override 1108 public void trace(final Marker marker, final String message, final Object... params) { 1109 logIfEnabled(FQCN, Level.TRACE, marker, message, params); 1110 } 1111 1112 @Override 1113 public void trace(final Marker marker, final String message, final Throwable t) { 1114 logIfEnabled(FQCN, Level.TRACE, marker, message, t); 1115 } 1116 1117 @Override 1118 public void trace(final Message msg) { 1119 logIfEnabled(FQCN, Level.TRACE, null, msg, null); 1120 } 1121 1122 @Override 1123 public void trace(final Message msg, final Throwable t) { 1124 logIfEnabled(FQCN, Level.TRACE, null, msg, t); 1125 } 1126 1127 @Override 1128 public void trace(final Object message) { 1129 logIfEnabled(FQCN, Level.TRACE, null, message, null); 1130 } 1131 1132 @Override 1133 public void trace(final Object message, final Throwable t) { 1134 logIfEnabled(FQCN, Level.TRACE, null, message, t); 1135 } 1136 1137 @Override 1138 public void trace(final String message) { 1139 logIfEnabled(FQCN, Level.TRACE, null, message, (Throwable) null); 1140 } 1141 1142 @Override 1143 public void trace(final String message, final Object... params) { 1144 logIfEnabled(FQCN, Level.TRACE, null, message, params); 1145 } 1146 1147 @Override 1148 public void trace(final String message, final Throwable t) { 1149 logIfEnabled(FQCN, Level.TRACE, null, message, t); 1150 } 1151 1152 @Override 1153 public void trace(final Supplier<?> msgSupplier) { 1154 logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, (Throwable) null); 1155 } 1156 1157 @Override 1158 public void trace(final Supplier<?> msgSupplier, final Throwable t) { 1159 logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t); 1160 } 1161 1162 @Override 1163 public void trace(final Marker marker, final Supplier<?> msgSupplier) { 1164 logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, (Throwable) null); 1165 } 1166 1167 @Override 1168 public void trace(final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 1169 logIfEnabled(FQCN, Level.TRACE, marker, message, paramSuppliers); 1170 } 1171 1172 @Override 1173 public void trace(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 1174 logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t); 1175 } 1176 1177 @Override 1178 public void trace(final String message, final Supplier<?>... paramSuppliers) { 1179 logIfEnabled(FQCN, Level.TRACE, null, message, paramSuppliers); 1180 } 1181 1182 @Override 1183 public void trace(final Marker marker, final MessageSupplier msgSupplier) { 1184 logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, (Throwable) null); 1185 } 1186 1187 @Override 1188 public void trace(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 1189 logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t); 1190 } 1191 1192 @Override 1193 public void trace(final MessageSupplier msgSupplier) { 1194 logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, (Throwable) null); 1195 } 1196 1197 @Override 1198 public void trace(final MessageSupplier msgSupplier, final Throwable t) { 1199 logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t); 1200 } 1201 1202 @Override 1203 public void warn(final Marker marker, final Message msg) { 1204 logIfEnabled(FQCN, Level.WARN, marker, msg, null); 1205 } 1206 1207 @Override 1208 public void warn(final Marker marker, final Message msg, final Throwable t) { 1209 logIfEnabled(FQCN, Level.WARN, marker, msg, t); 1210 } 1211 1212 @Override 1213 public void warn(final Marker marker, final Object message) { 1214 logIfEnabled(FQCN, Level.WARN, marker, message, null); 1215 } 1216 1217 @Override 1218 public void warn(final Marker marker, final Object message, final Throwable t) { 1219 logIfEnabled(FQCN, Level.WARN, marker, message, t); 1220 } 1221 1222 @Override 1223 public void warn(final Marker marker, final String message) { 1224 logIfEnabled(FQCN, Level.WARN, marker, message, (Throwable) null); 1225 } 1226 1227 @Override 1228 public void warn(final Marker marker, final String message, final Object... params) { 1229 logIfEnabled(FQCN, Level.WARN, marker, message, params); 1230 } 1231 1232 @Override 1233 public void warn(final Marker marker, final String message, final Throwable t) { 1234 logIfEnabled(FQCN, Level.WARN, marker, message, t); 1235 } 1236 1237 @Override 1238 public void warn(final Message msg) { 1239 logIfEnabled(FQCN, Level.WARN, null, msg, null); 1240 } 1241 1242 @Override 1243 public void warn(final Message msg, final Throwable t) { 1244 logIfEnabled(FQCN, Level.WARN, null, msg, t); 1245 } 1246 1247 @Override 1248 public void warn(final Object message) { 1249 logIfEnabled(FQCN, Level.WARN, null, message, null); 1250 } 1251 1252 @Override 1253 public void warn(final Object message, final Throwable t) { 1254 logIfEnabled(FQCN, Level.WARN, null, message, t); 1255 } 1256 1257 @Override 1258 public void warn(final String message) { 1259 logIfEnabled(FQCN, Level.WARN, null, message, (Throwable) null); 1260 } 1261 1262 @Override 1263 public void warn(final String message, final Object... params) { 1264 logIfEnabled(FQCN, Level.WARN, null, message, params); 1265 } 1266 1267 @Override 1268 public void warn(final String message, final Throwable t) { 1269 logIfEnabled(FQCN, Level.WARN, null, message, t); 1270 } 1271 1272 @Override 1273 public void warn(final Supplier<?> msgSupplier) { 1274 logIfEnabled(FQCN, Level.WARN, null, msgSupplier, (Throwable) null); 1275 } 1276 1277 @Override 1278 public void warn(final Supplier<?> msgSupplier, final Throwable t) { 1279 logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t); 1280 } 1281 1282 @Override 1283 public void warn(final Marker marker, final Supplier<?> msgSupplier) { 1284 logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, (Throwable) null); 1285 } 1286 1287 @Override 1288 public void warn(final Marker marker, final String message, final Supplier<?>... paramSuppliers) { 1289 logIfEnabled(FQCN, Level.WARN, marker, message, paramSuppliers); 1290 } 1291 1292 @Override 1293 public void warn(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) { 1294 logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t); 1295 } 1296 1297 @Override 1298 public void warn(final String message, final Supplier<?>... paramSuppliers) { 1299 logIfEnabled(FQCN, Level.WARN, null, message, paramSuppliers); 1300 } 1301 1302 @Override 1303 public void warn(final Marker marker, final MessageSupplier msgSupplier) { 1304 logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, (Throwable) null); 1305 } 1306 1307 @Override 1308 public void warn(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) { 1309 logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t); 1310 } 1311 1312 @Override 1313 public void warn(final MessageSupplier msgSupplier) { 1314 logIfEnabled(FQCN, Level.WARN, null, msgSupplier, (Throwable) null); 1315 } 1316 1317 @Override 1318 public void warn(final MessageSupplier msgSupplier, final Throwable t) { 1319 logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t); 1320 } 1321}