mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Unify log format of default JDK logger with other systems
This commit is contained in:
parent
a97f4f670c
commit
217a6a4cd1
@ -29,10 +29,14 @@ import java.util.logging.LogRecord;
|
|||||||
*/
|
*/
|
||||||
public class SimpleFormatter extends Formatter {
|
public class SimpleFormatter extends Formatter {
|
||||||
|
|
||||||
private static final String FORMAT = "%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL - [%7$s] %4$s - %3$s : %5$s%6$s%n";
|
private static final String DEFAULT_FORMAT = "[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL] - %8$s %4$s [%7$s] --- %3$s: %5$s%6$s%n";
|
||||||
|
|
||||||
|
private static String FORMAT = setOrUseDefault("LOG_FORMAT", DEFAULT_FORMAT);
|
||||||
|
|
||||||
private final Date date = new Date();
|
private final Date date = new Date();
|
||||||
|
|
||||||
|
private static String PID = setOrUseDefault("PID", "????");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized String format(LogRecord record) {
|
public synchronized String format(LogRecord record) {
|
||||||
this.date.setTime(record.getMillis());
|
this.date.setTime(record.getMillis());
|
||||||
@ -41,7 +45,7 @@ public class SimpleFormatter extends Formatter {
|
|||||||
String throwable = getThrowable(record);
|
String throwable = getThrowable(record);
|
||||||
String thread = getThreadName();
|
String thread = getThreadName();
|
||||||
return String.format(FORMAT, this.date, source, record.getLoggerName(), record
|
return String.format(FORMAT, this.date, source, record.getLoggerName(), record
|
||||||
.getLevel().getLocalizedName(), message, throwable, thread);
|
.getLevel().getLocalizedName(), message, throwable, thread, PID);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getThrowable(LogRecord record) {
|
private String getThrowable(LogRecord record) {
|
||||||
@ -61,4 +65,18 @@ public class SimpleFormatter extends Formatter {
|
|||||||
return (name == null ? "" : name);
|
return (name == null ? "" : name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String setOrUseDefault(String key, String defaultValue) {
|
||||||
|
String value = null;
|
||||||
|
try {
|
||||||
|
value = System.getenv(key);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
if (value == null) {
|
||||||
|
value = defaultValue;
|
||||||
|
}
|
||||||
|
return System.getProperty(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import org.apache.commons.logging.impl.Jdk14Logger;
|
|||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.bootstrap.logging.java.JavaLoggingSystem;
|
import org.springframework.util.ClassUtils;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
@ -53,7 +53,6 @@ public class JavaLoggerSystemTests {
|
|||||||
this.savedOutput = System.err;
|
this.savedOutput = System.err;
|
||||||
this.output = new ByteArrayOutputStream();
|
this.output = new ByteArrayOutputStream();
|
||||||
System.setErr(new PrintStream(this.output));
|
System.setErr(new PrintStream(this.output));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@ -62,6 +61,7 @@ public class JavaLoggerSystemTests {
|
|||||||
System.clearProperty("LOG_PATH");
|
System.clearProperty("LOG_PATH");
|
||||||
System.clearProperty("PID");
|
System.clearProperty("PID");
|
||||||
System.setErr(this.savedOutput);
|
System.setErr(this.savedOutput);
|
||||||
|
System.err.println(this.output);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getOutput() {
|
private String getOutput() {
|
||||||
@ -69,12 +69,32 @@ public class JavaLoggerSystemTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultConfigLocation() throws Exception {
|
public void testCustomFormatter() throws Exception {
|
||||||
this.loggingSystem.initialize("classpath:logging-nondefault.properties");
|
|
||||||
this.logger.info("Hello world");
|
this.logger.info("Hello world");
|
||||||
String output = getOutput().trim();
|
String output = getOutput().trim();
|
||||||
assertTrue("Wrong output:\n" + output, output.contains("Hello world"));
|
assertTrue("Wrong output:\n" + output, output.contains("Hello world"));
|
||||||
assertTrue("Wrong output:\n" + output, output.contains("INFO"));
|
assertTrue("Wrong output:\n" + output, output.contains("???? INFO ["));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSystemPropertyInitializesFormat() throws Exception {
|
||||||
|
System.setProperty("PID", "1234");
|
||||||
|
this.loggingSystem.initialize("classpath:"
|
||||||
|
+ ClassUtils.addResourcePathToPackagePath(getClass(),
|
||||||
|
"logging.properties"));
|
||||||
|
this.logger.info("Hello world");
|
||||||
|
this.logger.info("Hello world");
|
||||||
|
String output = getOutput().trim();
|
||||||
|
assertTrue("Wrong output:\n" + output, output.contains("Hello world"));
|
||||||
|
assertTrue("Wrong output:\n" + output, output.contains("1234 INFO ["));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNonDefaultConfigLocation() throws Exception {
|
||||||
|
this.loggingSystem.initialize("classpath:logging-nondefault.properties");
|
||||||
|
this.logger.info("Hello world");
|
||||||
|
String output = getOutput().trim();
|
||||||
|
assertTrue("Wrong output:\n" + output, output.contains("INFO: Hello"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalStateException.class)
|
@Test(expected = IllegalStateException.class)
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
handlers= java.util.logging.ConsoleHandler
|
handlers= java.util.logging.ConsoleHandler
|
||||||
.level= INFO
|
.level= INFO
|
||||||
java.util.logging.FileHandler.pattern = %h/java%u.log
|
|
||||||
java.util.logging.FileHandler.limit = 50000
|
|
||||||
java.util.logging.FileHandler.count = 1
|
|
||||||
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
|
|
||||||
java.util.logging.ConsoleHandler.level = INFO
|
java.util.logging.ConsoleHandler.level = INFO
|
||||||
java.util.logging.ConsoleHandler.formatter = org.springframework.bootstrap.logging.java.SimpleFormatter
|
java.util.logging.ConsoleHandler.formatter = org.springframework.bootstrap.logging.java.SimpleFormatter
|
||||||
java.util.logging.SimpleFormatter.format = %4$s: %5$s [%1$tc]%n
|
|
||||||
|
Loading…
Reference in New Issue
Block a user