Search in sources :

Example 21 with Level

use of org.apache.logging.log4j.Level in project ma-modules-public by infiniteautomation.

the class MangoLogFilePatternReceiver method convertToEvent.

/**
 * Convert a keyword-to-values map to a LoggingEvent
 *
 * @param fieldMap
 * @param exception
 *
 * @return logging event
 */
private LoggingEvent convertToEvent(Map<String, String> fieldMap, String[] exception) {
    if (fieldMap == null) {
        return null;
    }
    // a logger must exist at a minimum for the event to be processed
    if (!fieldMap.containsKey(LOGGER)) {
        fieldMap.put(LOGGER, "Unknown");
    }
    if (exception == null) {
        exception = emptyException;
    }
    long timeStamp = 0L;
    String level = null;
    String threadName = null;
    String message = null;
    // String ndc = null;
    // String className = null;
    // String methodName = null;
    String eventFileName = null;
    if ((dateFormat != null) && fieldMap.containsKey(TIMESTAMP)) {
        try {
            timeStamp = dateFormat.parse((String) fieldMap.remove(TIMESTAMP)).getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // use current time if timestamp not parseable
    if (timeStamp == 0L) {
        timeStamp = System.currentTimeMillis();
    }
    message = fieldMap.remove(MESSAGE);
    if (message == null) {
        message = "";
    }
    level = (String) fieldMap.remove(LEVEL);
    Level levelImpl;
    if (level == null) {
        levelImpl = Level.DEBUG;
    } else {
        // first try to resolve against custom level definition map, then fall back to regular
        // levels
        levelImpl = (Level) customLevelDefinitionMap.get(level);
        if (levelImpl == null) {
            levelImpl = Level.toLevel(level.trim());
            if (!level.equals(levelImpl.toString())) {
            // check custom level map
            // if (levelImpl == null) {
            // levelImpl = Level.DEBUG;
            // getLogger().debug("found unexpected level: " + level + ", logger: " +
            // logger.getName() + ", msg: " + message);
            // //make sure the text that couldn't match a level is added to the message
            // message = level + " " + message;
            // }
            }
        }
    }
    threadName = (String) fieldMap.remove(THREAD);
    // ndc = (String) fieldMap.remove(NDC);
    // className = (String) fieldMap.remove(CLASS);
    // methodName = (String) fieldMap.remove(METHOD);
    eventFileName = (String) fieldMap.remove(FILE);
    // lineNumber = (String) fieldMap.remove(LINE);
    LoggingEvent event = new LoggingEvent(levelImpl, timeStamp, message, exception, eventFileName, threadName);
    return event;
}
Also used : Level(org.apache.logging.log4j.Level) ShouldNeverHappenException(com.serotonin.ShouldNeverHappenException) PatternSyntaxException(java.util.regex.PatternSyntaxException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException)

Example 22 with Level

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

the class Configurator method setLevel.

/**
 * Sets logger levels.
 *
 * @param levelMap
 *            a levelMap where keys are level names and values are new
 *            Levels.
 */
public static void setLevel(final Map<String, Level> levelMap) {
    final LoggerContext loggerContext = LoggerContext.getContext(StackLocatorUtil.getCallerClassLoader(2), false, null);
    final Configuration config = loggerContext.getConfiguration();
    boolean set = false;
    for (final Map.Entry<String, Level> entry : levelMap.entrySet()) {
        final String loggerName = entry.getKey();
        final Level level = entry.getValue();
        set |= setLevel(loggerName, level, config);
    }
    if (set) {
        loggerContext.updateLoggers();
    }
}
Also used : Level(org.apache.logging.log4j.Level) LoggerContext(org.apache.logging.log4j.core.LoggerContext) Map(java.util.Map)

Example 23 with Level

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

the class AsyncQueueFullPolicyFactory method createDiscardingAsyncQueueFullPolicy.

private static AsyncQueueFullPolicy createDiscardingAsyncQueueFullPolicy() {
    final PropertiesUtil util = PropertiesUtil.getProperties();
    final String level = util.getStringProperty(PROPERTY_NAME_DISCARDING_THRESHOLD_LEVEL, Level.INFO.name());
    final Level thresholdLevel = Level.toLevel(level, Level.INFO);
    LOGGER.debug("Creating custom DiscardingAsyncQueueFullPolicy(discardThreshold:{})", thresholdLevel);
    return new DiscardingAsyncQueueFullPolicy(thresholdLevel);
}
Also used : PropertiesUtil(org.apache.logging.log4j.util.PropertiesUtil) Level(org.apache.logging.log4j.Level)

Example 24 with Level

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

the class JsonTemplateLayoutTest method test_timestamp_epoch_resolvers.

@Test
@SuppressWarnings("FloatingPointLiteralPrecision")
void test_timestamp_epoch_resolvers() {
    final List<Map<String, Object>> testCases = Arrays.asList(asMap("epochSecs", new BigDecimal("1581082727.982123456"), "epochSecsRounded", 1581082727, "epochSecsNanos", 982123456, "epochMillis", new BigDecimal("1581082727982.123456"), "epochMillisRounded", 1581082727982L, "epochMillisNanos", 123456, "epochNanos", 1581082727982123456L), asMap("epochSecs", new BigDecimal("1591177590.005000001"), "epochSecsRounded", 1591177590, "epochSecsNanos", 5000001, "epochMillis", new BigDecimal("1591177590005.000001"), "epochMillisRounded", 1591177590005L, "epochMillisNanos", 1, "epochNanos", 1591177590005000001L));
    // Create the event template.
    final String eventTemplate = writeJson(asMap("epochSecs", asMap("$resolver", "timestamp", "epoch", asMap("unit", "secs")), "epochSecsRounded", asMap("$resolver", "timestamp", "epoch", asMap("unit", "secs", "rounded", true)), "epochSecsNanos", asMap("$resolver", "timestamp", "epoch", asMap("unit", "secs.nanos")), "epochMillis", asMap("$resolver", "timestamp", "epoch", asMap("unit", "millis")), "epochMillisRounded", asMap("$resolver", "timestamp", "epoch", asMap("unit", "millis", "rounded", true)), "epochMillisNanos", asMap("$resolver", "timestamp", "epoch", asMap("unit", "millis.nanos")), "epochNanos", asMap("$resolver", "timestamp", "epoch", asMap("unit", "nanos"))));
    // Create the layout.
    final JsonTemplateLayout layout = JsonTemplateLayout.newBuilder().setConfiguration(CONFIGURATION).setEventTemplate(eventTemplate).build();
    testCases.forEach(testCase -> {
        // Create the log event.
        final SimpleMessage message = new SimpleMessage("Hello, World!");
        final Level level = Level.ERROR;
        final MutableInstant instant = new MutableInstant();
        final Object instantSecsObject = testCase.get("epochSecsRounded");
        final long instantSecs = instantSecsObject instanceof Long ? (long) instantSecsObject : (int) instantSecsObject;
        final int instantSecsNanos = (int) testCase.get("epochSecsNanos");
        instant.initFromEpochSecond(instantSecs, instantSecsNanos);
        final LogEvent logEvent = Log4jLogEvent.newBuilder().setLoggerName(LOGGER_NAME).setLevel(level).setMessage(message).setInstant(instant).build();
        // Verify the test case.
        usingSerializedLogEventAccessor(layout, logEvent, accessor -> testCase.forEach((key, expectedValue) -> Assertions.assertThat(accessor.getObject(key)).describedAs("key=%s", key).isEqualTo(expectedValue)));
    });
}
Also used : ParameterizedMessageFactory(org.apache.logging.log4j.message.ParameterizedMessageFactory) SimpleMessage(org.apache.logging.log4j.message.SimpleMessage) Arrays(java.util.Arrays) PluginFactory(org.apache.logging.log4j.plugins.PluginFactory) EventResolverContext(org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext) MappingIterator(com.fasterxml.jackson.databind.MappingIterator) EventResolver(org.apache.logging.log4j.layout.template.json.resolver.EventResolver) ReusableMessageFactory(org.apache.logging.log4j.message.ReusableMessageFactory) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Level(org.apache.logging.log4j.Level) LogEvent(org.apache.logging.log4j.core.LogEvent) ByteBuffer(java.nio.ByteBuffer) Configuration(org.apache.logging.log4j.core.config.Configuration) ServerSocket(java.net.ServerSocket) BigDecimal(java.math.BigDecimal) ConfigurationBuilderFactory(org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Map(java.util.Map) StringMapMessage(org.apache.logging.log4j.message.StringMapMessage) StringMap(org.apache.logging.log4j.util.StringMap) Assertions(org.assertj.core.api.Assertions) JsonNode(com.fasterxml.jackson.databind.JsonNode) TemplateResolver(org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver) Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) JsonWriter(org.apache.logging.log4j.layout.template.json.util.JsonWriter) BlockingQueue(java.util.concurrent.BlockingQueue) Instant(java.time.Instant) EOFException(java.io.EOFException) Collectors(java.util.stream.Collectors) Test(org.junit.jupiter.api.Test) TemplateResolverConfig(org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverConfig) ArrayBlockingQueue(java.util.concurrent.ArrayBlockingQueue) MarkerManager(org.apache.logging.log4j.MarkerManager) List(java.util.List) Strings(org.apache.logging.log4j.util.Strings) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IntStream(java.util.stream.IntStream) ChronoField(java.time.temporal.ChronoField) TemplateResolverFactory(org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverFactory) Socket(java.net.Socket) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ObjectMessage(org.apache.logging.log4j.message.ObjectMessage) Severity(org.apache.logging.log4j.core.net.Severity) TemporalAccessor(java.time.temporal.TemporalAccessor) ArrayList(java.util.ArrayList) EventTemplateAdditionalField(org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField) Message(org.apache.logging.log4j.message.Message) Charset(java.nio.charset.Charset) SocketAppender(org.apache.logging.log4j.core.appender.SocketAppender) MutableInstant(org.apache.logging.log4j.core.time.MutableInstant) ByteBufferDestination(org.apache.logging.log4j.core.layout.ByteBufferDestination) Marker(org.apache.logging.log4j.Marker) TestHelpers(org.apache.logging.log4j.layout.template.json.TestHelpers) PrintStream(java.io.PrintStream) MessageFactory(org.apache.logging.log4j.message.MessageFactory) SortedArrayStringMap(org.apache.logging.log4j.util.SortedArrayStringMap) EventResolverFactory(org.apache.logging.log4j.layout.template.json.resolver.EventResolverFactory) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) IOException(java.io.IOException) MainMapLookup(org.apache.logging.log4j.core.lookup.MainMapLookup) TimeUnit(java.util.concurrent.TimeUnit) AvailablePortFinder(org.apache.logging.log4j.core.test.AvailablePortFinder) Plugin(org.apache.logging.log4j.plugins.Plugin) Collections(java.util.Collections) InputStream(java.io.InputStream) LogEvent(org.apache.logging.log4j.core.LogEvent) Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) SimpleMessage(org.apache.logging.log4j.message.SimpleMessage) MutableInstant(org.apache.logging.log4j.core.time.MutableInstant) BigDecimal(java.math.BigDecimal) Level(org.apache.logging.log4j.Level) Map(java.util.Map) StringMap(org.apache.logging.log4j.util.StringMap) SortedArrayStringMap(org.apache.logging.log4j.util.SortedArrayStringMap) Test(org.junit.jupiter.api.Test)

Example 25 with Level

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

the class JsonTemplateLayoutTest method testMessageParameterResolver.

private static void testMessageParameterResolver(final MessageFactory messageFactory) {
    // Create the event template.
    final String eventTemplate = writeJson(asMap("po*", asMap("$resolver", "messageParameter"), "ps*", asMap("$resolver", "messageParameter", "stringified", true), "po2", asMap("$resolver", "messageParameter", "index", 2), "ps2", asMap("$resolver", "messageParameter", "index", 2, "stringified", true), "po3", asMap("$resolver", "messageParameter", "index", 3)));
    // Create the layout.
    final JsonTemplateLayout layout = JsonTemplateLayout.newBuilder().setConfiguration(CONFIGURATION).setEventTemplate(eventTemplate).build();
    // Create the log event.
    final Object[] parameters = { 1L + (long) Integer.MAX_VALUE, "foo", 56 };
    final Message message = messageFactory.newMessage("foo", parameters);
    final Level level = Level.FATAL;
    final LogEvent logEvent = Log4jLogEvent.newBuilder().setLoggerName(LOGGER_NAME).setMessage(message).setLevel(level).build();
    // Check the serialized event.
    usingSerializedLogEventAccessor(layout, logEvent, accessor -> {
        assertThat(accessor.getObject("po*")).isEqualTo(Arrays.asList(parameters));
        List<String> stringifiedParameters = Arrays.stream(parameters).map(String::valueOf).collect(Collectors.toList());
        assertThat(accessor.getObject("ps*")).isEqualTo(stringifiedParameters);
        assertThat(accessor.getObject("po2")).isEqualTo(parameters[2]);
        assertThat(accessor.getString("ps2")).isEqualTo(stringifiedParameters.get(2));
        assertThat(accessor.getString("ps3")).isNull();
    });
}
Also used : SimpleMessage(org.apache.logging.log4j.message.SimpleMessage) StringMapMessage(org.apache.logging.log4j.message.StringMapMessage) ObjectMessage(org.apache.logging.log4j.message.ObjectMessage) Message(org.apache.logging.log4j.message.Message) LogEvent(org.apache.logging.log4j.core.LogEvent) Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) Level(org.apache.logging.log4j.Level)

Aggregations

Level (org.apache.logging.log4j.Level)152 Test (org.junit.Test)31 LoggerContext (org.apache.logging.log4j.core.LoggerContext)27 LoggerConfig (org.apache.logging.log4j.core.config.LoggerConfig)27 Logger (org.apache.logging.log4j.Logger)25 SimpleMessage (org.apache.logging.log4j.message.SimpleMessage)25 Message (org.apache.logging.log4j.message.Message)23 Marker (org.apache.logging.log4j.Marker)21 Configuration (org.apache.logging.log4j.core.config.Configuration)21 Map (java.util.Map)16 HashMap (java.util.HashMap)14 LogEvent (org.apache.logging.log4j.core.LogEvent)13 Test (org.junit.jupiter.api.Test)12 ContextStack (org.apache.logging.log4j.ThreadContext.ContextStack)11 StringMap (org.apache.logging.log4j.util.StringMap)10 Appender (org.apache.logging.log4j.core.Appender)9 IOException (java.io.IOException)8 ArrayList (java.util.ArrayList)8 List (java.util.List)8 Log4jLogEvent (org.apache.logging.log4j.core.impl.Log4jLogEvent)8