All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.bund.bva.isyfact.logging.layout.IsyJacksonJsonFormatter Maven / Gradle / Ivy

package de.bund.bva.isyfact.logging.layout;

/*
 * #%L
 * isy-logging
 * %%
 * 
 * %%
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 * The Federal Office of Administration (Bundesverwaltungsamt, BVA)
 * licenses this file to you under the Apache License, Version 2.0 (the
 * License). You may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 * #L%
 */

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import ch.qos.logback.contrib.jackson.JacksonJsonFormatter;

/**
 * Erweiterung des JacksonJsonFormatters, um IsyLogging erweiterte Konfigurationsmöglichkeiten
 * bereitzustellen.
 *
 */
public class IsyJacksonJsonFormatter extends JacksonJsonFormatter {

    /**
     * Konstruktor der Klasse. Führt die notwendigen Konfigurationen durch.
     * 
     */
    public IsyJacksonJsonFormatter() {
        super();
        konfiguriereObjectMapper();
    }

    /**
     * Hilfsmethode zum Konfigurieren des ObjectMappers. Der Mapper bestimmt, wie Objekte in JSON abgebildet
     * werden. Der Formatter bietet jedoch keine Möglichkeit, den Mapper in der logback-Konfiguration zu
     * konfigurieren. Daher findet die Konfiguration in dieser Hilfmethode statt.
     */
    private void konfiguriereObjectMapper() {
        ObjectMapper mapper = getObjectMapper();
        // Wenn ein Objekt übergeben wird, welches als Wert eines JSON-Attributs verwendet werden soll, dieses
        // Attribut aber keine getter und setter und auch keine Annotationen enthält, wie dieses in JSON
        // umgewandelt werden soll, wirft der ObjectMapper standardmäßig einen Fehler. In den Logeinträgen
        // äußert sich das dann so, dass ein fehlerhaftes JSON (ohne Anführungszeichen) ausgegeben wird
        // (entspricht einem toString-Aufruf der Map mit den zu serialisierenden Attributen). Durch setzen
        // des Parameters FAIL_ON_EMPTY_BEANS auf false wird der Fehler verhindert und in diesem Fall nur die
        // Object-ID als Wert übernommen.
        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy