Search in sources :

Example 1 with Layout

use of org.apache.logging.log4j.core.Layout in project Anserini by castorini.

the class TrainingDataGenerator method createNewLoggerConfig.

/**
 * Dynamically creates a logger configuration with an appender that writes to a file.
 * This logger is used to write training data.
 *
 * @param loggerName     the name of the logger to create
 * @param outputFilePath the file path to write logs to
 * @param patternLayout  layout for the logger, if null just display
 *                       the message using DEFAULT_CONVERSION_PATTERN
 */
private static void createNewLoggerConfig(String loggerName, String outputFilePath, String patternLayout) {
    // Ignore null output files
    if (outputFilePath == null)
        return;
    // Create a logger to write the training data
    final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
    final Configuration config = ctx.getConfiguration();
    Layout layout = PatternLayout.createLayout(patternLayout == null ? PatternLayout.DEFAULT_CONVERSION_PATTERN : patternLayout, config, null, StandardCharsets.UTF_8, false, false, null, null);
    Appender appender = FileAppender.createAppender(outputFilePath, "false", "false", loggerName, "true", "false", "false", "2000", layout, null, "false", null, config);
    appender.start();
    config.addAppender(appender);
    // Adding reference to the appender
    AppenderRef ref = AppenderRef.createAppenderRef(loggerName, null, null);
    AppenderRef[] refs = new AppenderRef[] { ref };
    LoggerConfig loggerConfig = LoggerConfig.createLogger("false", Level.TRACE, loggerName, "true", refs, null, config, null);
    // Adding appender to logger, and adding logger to context
    loggerConfig.addAppender(appender, null, null);
    config.addLogger(loggerName, loggerConfig);
    ctx.updateLoggers();
}
Also used : Appender(org.apache.logging.log4j.core.Appender) FileAppender(org.apache.logging.log4j.core.appender.FileAppender) Configuration(org.apache.logging.log4j.core.config.Configuration) Layout(org.apache.logging.log4j.core.Layout) PatternLayout(org.apache.logging.log4j.core.layout.PatternLayout) AppenderRef(org.apache.logging.log4j.core.config.AppenderRef) LoggerContext(org.apache.logging.log4j.core.LoggerContext) LoggerConfig(org.apache.logging.log4j.core.config.LoggerConfig)

Example 2 with Layout

use of org.apache.logging.log4j.core.Layout in project hive by apache.

the class LogDivertAppender method getDefaultLayout.

public Layout<? extends Serializable> getDefaultLayout() {
    // There should be a ConsoleAppender. Copy its Layout.
    Logger root = LogManager.getRootLogger();
    Layout layout = null;
    for (Appender ap : ((org.apache.logging.log4j.core.Logger) root).getAppenders().values()) {
        if (ap.getClass().equals(ConsoleAppender.class)) {
            layout = ap.getLayout();
            break;
        }
    }
    return layout;
}
Also used : Appender(org.apache.logging.log4j.core.Appender) AbstractOutputStreamAppender(org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender) ConsoleAppender(org.apache.logging.log4j.core.appender.ConsoleAppender) Layout(org.apache.logging.log4j.core.Layout) PatternLayout(org.apache.logging.log4j.core.layout.PatternLayout) PerfLogger(org.apache.hadoop.hive.ql.log.PerfLogger) Logger(org.apache.logging.log4j.Logger)

Example 3 with Layout

use of org.apache.logging.log4j.core.Layout in project xian by happyyangyuan.

the class GelfLogAppender method createAppender.

@PluginFactory
public static GelfLogAppender createAppender(@PluginConfiguration final Configuration config, @PluginAttribute("name") String name, @PluginElement("Filter") Filter filter, @PluginElement("Field") final GelfLogField[] knownFields, @PluginElement("DynamicMdcFields") final GelfDynamicMdcLogFields[] dynamicMdcFieldArray, @PluginAttribute("graylogHost") String graylogHost, @PluginAttribute("host") String host, @PluginAttribute("graylogPort") String graylogPort, @PluginAttribute("port") String port, @PluginAttribute("version") String version, @PluginAttribute("extractStackTrace") String extractStackTrace, @PluginAttribute("originHost") String originHost, @PluginAttribute("includeFullMdc") String includeFullMdc, @PluginAttribute("facility") String facility, @PluginAttribute("filterStackTrace") String filterStackTrace, @PluginAttribute("mdcProfiling") String mdcProfiling, @PluginAttribute("maximumMessageSize") String maximumMessageSize, @PluginAttribute("additionalFieldTypes") String additionalFieldTypes, @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) boolean ignoreExceptions, @PluginAttribute("layout") String layoutString, @PluginAttribute("messageFormat") MessageFormatEnum jsonOrPlainOrDefault) {
    RuntimeContainer.initialize(ERROR_REPORTER);
    MdcGelfMessageAssembler mdcGelfMessageAssembler;
    if (Objects.equals(MessageFormatEnum.json, jsonOrPlainOrDefault))
        mdcGelfMessageAssembler = new MdcGelfJsonMessageAssembler();
    else
        mdcGelfMessageAssembler = new MdcGelfMessageAssembler();
    if (name == null) {
        LOGGER.error("No name provided for " + GelfLogAppender.class.getSimpleName());
        return null;
    }
    if (Strings.isEmpty(host) && Strings.isEmpty(graylogHost)) {
        LOGGER.error("No host provided for " + GelfLogAppender.class.getSimpleName(), new Throwable());
        return null;
    }
    if (Strings.isNotEmpty(host)) {
        mdcGelfMessageAssembler.setHost(host);
    }
    if (Strings.isNotEmpty(graylogHost)) {
        mdcGelfMessageAssembler.setHost(graylogHost);
    }
    if (Strings.isNotEmpty(port)) {
        mdcGelfMessageAssembler.setPort(Integer.parseInt(port));
    }
    if (Strings.isNotEmpty(graylogPort)) {
        mdcGelfMessageAssembler.setPort(Integer.parseInt(graylogPort));
    }
    if (Strings.isNotEmpty(version)) {
        mdcGelfMessageAssembler.setVersion(version);
    }
    if (Strings.isNotEmpty(originHost)) {
        PatternLayout patternLayout = newBuilder().withPattern(originHost).withConfiguration(config).withNoConsoleNoAnsi(false).withAlwaysWriteExceptions(false).build();
        mdcGelfMessageAssembler.setOriginHost(patternLayout.toSerializable(new Log4jLogEvent()));
    }
    if (facility != null) {
        mdcGelfMessageAssembler.setFacility(facility);
    }
    if (extractStackTrace != null) {
        mdcGelfMessageAssembler.setExtractStackTrace(extractStackTrace);
    }
    if (filterStackTrace != null) {
        mdcGelfMessageAssembler.setFilterStackTrace("true".equals(filterStackTrace));
    }
    if (mdcProfiling != null) {
        mdcGelfMessageAssembler.setMdcProfiling("true".equals(mdcProfiling));
    }
    if (includeFullMdc != null) {
        mdcGelfMessageAssembler.setIncludeFullMdc("true".equals(includeFullMdc));
    }
    if (maximumMessageSize != null) {
        mdcGelfMessageAssembler.setMaximumMessageSize(Integer.parseInt(maximumMessageSize));
    }
    if (additionalFieldTypes != null) {
        ConfigurationSupport.setAdditionalFieldTypes(additionalFieldTypes, mdcGelfMessageAssembler);
    }
    Layout layout = null;
    if (layoutString != null) {
        layout = PatternLayout.newBuilder().withPattern(layoutString).build();
    }
    configureFields(mdcGelfMessageAssembler, knownFields, dynamicMdcFieldArray);
    return new GelfLogAppender(name, filter, layout, mdcGelfMessageAssembler, ignoreExceptions);
}
Also used : Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) Layout(org.apache.logging.log4j.core.Layout) PatternLayout(org.apache.logging.log4j.core.layout.PatternLayout) PatternLayout(org.apache.logging.log4j.core.layout.PatternLayout)

Example 4 with Layout

use of org.apache.logging.log4j.core.Layout in project logging-log4j2 by apache.

the class LegacyPluginTest method testLegacy.

@Test
public void testLegacy(final Configuration configuration) throws Exception {
    assertThat(configuration, instanceOf(XmlConfiguration.class));
    for (Map.Entry<String, Appender> entry : configuration.getAppenders().entrySet()) {
        if (entry.getKey().equalsIgnoreCase("console")) {
            Layout layout = entry.getValue().getLayout();
            assertNotNull("No layout for Console Appender");
            String name = layout.getClass().getSimpleName();
            assertEquals("LogstashLayout", name, "Incorrect Layout class. Expected LogstashLayout, Actual " + name);
        } else if (entry.getKey().equalsIgnoreCase("customConsole")) {
            Layout layout = entry.getValue().getLayout();
            assertNotNull("No layout for CustomConsole Appender");
            String name = layout.getClass().getSimpleName();
            assertEquals("CustomConsoleLayout", name, "Incorrect Layout class. Expected CustomConsoleLayout, Actual " + name);
        }
    }
}
Also used : Appender(org.apache.logging.log4j.core.Appender) Layout(org.apache.logging.log4j.core.Layout) XmlConfiguration(org.apache.logging.log4j.core.config.xml.XmlConfiguration) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Aggregations

Layout (org.apache.logging.log4j.core.Layout)4 Appender (org.apache.logging.log4j.core.Appender)3 PatternLayout (org.apache.logging.log4j.core.layout.PatternLayout)3 Map (java.util.Map)1 PerfLogger (org.apache.hadoop.hive.ql.log.PerfLogger)1 Logger (org.apache.logging.log4j.Logger)1 LoggerContext (org.apache.logging.log4j.core.LoggerContext)1 AbstractOutputStreamAppender (org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender)1 ConsoleAppender (org.apache.logging.log4j.core.appender.ConsoleAppender)1 FileAppender (org.apache.logging.log4j.core.appender.FileAppender)1 AppenderRef (org.apache.logging.log4j.core.config.AppenderRef)1 Configuration (org.apache.logging.log4j.core.config.Configuration)1 LoggerConfig (org.apache.logging.log4j.core.config.LoggerConfig)1 XmlConfiguration (org.apache.logging.log4j.core.config.xml.XmlConfiguration)1 Log4jLogEvent (org.apache.logging.log4j.core.impl.Log4jLogEvent)1 Test (org.junit.jupiter.api.Test)1