1 package org.slf4j.jul; 2 3 import static org.junit.Assert.assertEquals; 4 5 import java.util.function.Supplier; 6 import java.util.logging.Handler; 7 import java.util.logging.Level; 8 import java.util.logging.LogRecord; 9 10 import org.junit.After; 11 import org.junit.Assert; 12 import org.junit.Before; 13 import org.junit.Test; 14 import org.slf4j.Logger; 15 import org.slf4j.LoggerFactory; 16 17 public class FluentApiInvocationTest { 18 19 ListHandler listHandler = new ListHandler(); 20 java.util.logging.Logger root = java.util.logging.Logger.getLogger(""); 21 Level oldLevel; 22 Logger logger = LoggerFactory.getLogger(this.getClass()); 23 24 @Before setUp()25 public void setUp() throws Exception { 26 oldLevel = root.getLevel(); 27 root.setLevel(Level.FINE); 28 // removeAllHandlers(root); 29 root.addHandler(listHandler); 30 } 31 32 @After tearDown()33 public void tearDown() throws Exception { 34 root.setLevel(oldLevel); 35 removeListHandlers(root); 36 } 37 removeListHandlers(java.util.logging.Logger logger)38 void removeListHandlers(java.util.logging.Logger logger) { 39 Handler[] handlers = logger.getHandlers(); 40 for (Handler h : handlers) { 41 if (h instanceof ListHandler) 42 logger.removeHandler(h); 43 } 44 } 45 46 @Test singleMessage()47 public void singleMessage() { 48 String msg = "Hello world."; 49 logger.atDebug().log(msg); 50 assertLogMessage(msg, 0); 51 } 52 53 @Test messageWithArguments()54 public void messageWithArguments() { 55 String msg = "Hello {}."; 56 logger.atDebug().addArgument("world").log(msg); 57 assertLogMessage("Hello world.", 0); 58 } 59 60 @Test messageWithTwoArguments()61 public void messageWithTwoArguments() { 62 int old = 15; 63 int t = 16; 64 65 { 66 String msg = "Temperature set to {}. Old temperature was {}."; 67 logger.atDebug().addArgument(t).addArgument(old).log(msg); 68 assertLogMessage("Temperature set to 16. Old temperature was 15.", 0); 69 } 70 71 { 72 String msg = "Temperature set to {}. Old temperature was {}."; 73 logger.atDebug().log(msg, t, old); 74 assertLogMessage("Temperature set to 16. Old temperature was 15.", 0); 75 } 76 77 { 78 String msg = "Temperature set to {}. Old temperature was {}."; 79 logger.atDebug().addArgument(t).log(msg, old); 80 assertLogMessage("Temperature set to 16. Old temperature was 15.", 0); 81 } 82 83 { 84 String msg = "Temperature set to {}. Old temperature was {}."; 85 logger.atDebug().addArgument(() -> t16()).log(msg, old); 86 assertLogMessage("Temperature set to 16. Old temperature was 15.", 0); 87 } 88 } 89 90 @Test supplierArguments()91 public void supplierArguments() { 92 Supplier<String> stringSupplier = () -> "world"; 93 logger.atInfo().addArgument(stringSupplier).log("hello {}"); 94 assertLogMessage("hello world", 0); 95 } 96 t16()97 public int t16() { 98 return 16; 99 } 100 101 @Test messageWithThrowable()102 public void messageWithThrowable() { 103 String msg = "Hello world."; 104 Throwable t = new IllegalStateException(); 105 logger.atDebug().setCause(t).log(msg); 106 assertLogMessage("Hello world.", 0); 107 assertThrowable(t, 0); 108 } 109 110 @Test messageWithArgumentsAndThrowable()111 public void messageWithArgumentsAndThrowable() { 112 String msg = "Hello {}."; 113 Throwable t = new IllegalStateException(); 114 115 logger.atDebug().setCause(t).addArgument("world").log(msg); 116 assertLogMessage("Hello world.", 0); 117 assertThrowable(t, 0); 118 } 119 120 @Test messageWithKeyValuePair()121 public void messageWithKeyValuePair() { 122 String msg = "Hello world."; 123 logger.atDebug().addKeyValue("k", "v").log(msg); 124 assertLogMessage("k=v Hello world.", 0); 125 126 int oldT = 15; 127 int newT = 16; 128 logger.atDebug().addKeyValue("oldT", oldT).addKeyValue("newT", newT).log("Temperature changed."); 129 assertLogMessage("oldT=15 newT=16 Temperature changed.", 1); 130 131 } 132 assertLogMessage(String expected, int index)133 private void assertLogMessage(String expected, int index) { 134 LogRecord logRecord = listHandler.recordList.get(index); 135 Assert.assertNotNull(logRecord); 136 assertEquals(expected, logRecord.getMessage()); 137 } 138 assertThrowable(Throwable expected, int index)139 private void assertThrowable(Throwable expected, int index) { 140 LogRecord logRecord = listHandler.recordList.get(index); 141 Assert.assertNotNull(logRecord); 142 assertEquals(expected, logRecord.getThrown()); 143 } 144 } 145