Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
import org.apache.logging.log4j.core.config.plugins.util.PluginType;
import org.apache.logging.log4j.core.filter.AbstractFilterable;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.lookup.ConfigurationStrSubstitutor;
import org.apache.logging.log4j.core.lookup.Interpolator;
import org.apache.logging.log4j.core.lookup.PropertiesLookup;
Expand Down Expand Up @@ -779,10 +778,7 @@ public static Level getDefaultLevel() {
protected void setToDefault() {
// LOG4J2-1176 facilitate memory leak investigation
setName(DefaultConfiguration.DEFAULT_NAME + "@" + Integer.toHexString(hashCode()));
final Layout<? extends Serializable> layout = PatternLayout.newBuilder()
.withPattern(DefaultConfiguration.DEFAULT_PATTERN)
.withConfiguration(this)
.build();
final Layout<? extends Serializable> layout = DefaultConfiguration.createDefaultLayout();
final Appender appender = ConsoleAppender.createDefaultAppenderForLayout(layout);
appender.start();
addAppender(appender);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,18 @@
*/
package org.apache.logging.log4j.core.config;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.nio.charset.Charset;
import org.apache.logging.log4j.LoggingException;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.layout.AbstractLayout;
import org.apache.logging.log4j.core.util.StringBuilderWriter;
import org.apache.logging.log4j.core.util.datetime.FixedDateFormat;
import org.apache.logging.log4j.core.util.datetime.FixedDateFormat.FixedFormat;

/**
* The default configuration writes all output to the Console using the default logging level. You configure default
* logging level by setting the system property "org.apache.logging.log4j.level" to a level name. If you do not
Expand Down Expand Up @@ -49,4 +61,60 @@ public DefaultConfiguration() {

@Override
protected void doConfigure() {}

static Layout<? extends String> createDefaultLayout() {
return new DefaultLayout();
}

/**
* A simple layout used only by {@link DefaultConfiguration}
* <p>
* This layout allows to create applications that don't contain {@link org.apache.logging.log4j.core.layout.PatternLayout}
* and all its patterns, e.g. GraalVM applications.
* </p>
*/
private static final class DefaultLayout extends AbstractLayout<String> {

private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];

private final FixedDateFormat dateFormat = FixedDateFormat.create(FixedFormat.ABSOLUTE);

private DefaultLayout() {
super(null, EMPTY_BYTE_ARRAY, EMPTY_BYTE_ARRAY);
}

@Override
public String toSerializable(LogEvent event) {
try (Writer sw = new StringBuilderWriter();
PrintWriter pw = new PrintWriter(sw)) {
pw.append(dateFormat.format(event.getTimeMillis()))
.append(" [")
.append(event.getThreadName())
.append("] ")
.append(event.getLevel().toString())
.append(" ")
.append(event.getLoggerName())
.append(" - ")
.append(event.getMessage().getFormattedMessage())
.append("\n");
Throwable throwable = event.getThrown();
if (throwable != null) {
throwable.printStackTrace(pw);
}
return sw.toString();
} catch (IOException e) {
throw new LoggingException(e);
}
}

@Override
public byte[] toByteArray(LogEvent event) {
return toSerializable(event).getBytes(Charset.defaultCharset());
}

@Override
public String getContentType() {
return "text/plain";
}
}
}