es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español: log json string mensaje usando log4j en formato JSON sin romper el formato con comillas.

Estoy tratando de formatear los registros en un formato JSON y estoy usando un diseño de patrón para hacerlo. Pero la salida que se genera no está en un formato JSON adecuado debido a las comillas adicionales que se registran dentro de un mensaje.

A continuación se muestra el archivo log4j.properties
=======================log4j.properties==================

appender.file.layout.pattern={"level":"%p","time":"%d{ISO8601}","thread":"%t","file":"%F", "line":"%L","message":"%m"}%n
loggers=file
logger.file.name=com.ibm
logger.file.level = error
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = error
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

A continuación se muestra el formato del código

String msg = "!@#$%^&amp;*()_+=~{}[]|<>?;'Text with special character /\"'\\b\\f\\t\\r\\n";
// para escapar los caracteres especiales, se serializa el mensaje con el método de la biblioteca Jackson
String serializeMsg = objectMapper.writeValueAsString(msg);
String jsonString = "" + serializeMsg + "\", \"crn\":\"" + crn + "\", \"otherProperty\":\"" + crn + "\"";
log.debug(serializeMsg);

Registro JSON generado

{"level":"DEBUG","time":"2021-12-20T20:05:14,465","thread":"main","file":"App.java", "line":"81","message":""!@#$%^&amp;*()_+=~{}[]|<>?;'Text with special character /\"'\\b\\f\\t\\r\\n"", "crn":"5741af48-808a-4e55-8f37-681f025b1ce3", "otherProperty":"5741af48-808a-4e55-8f37-681f025b1ce3""}

¿Cómo puedo eliminar las comillas adicionales del mensaje? ¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar las comillas adicionales del mensaje en el registro JSON generado, debes modificar el diseño del patrón en tu archivo log4j.properties. En lugar de usar " para escapar las comillas dobles en el diseño del patrón, utiliza las comillas dobles reales para formatear correctamente el JSON.

    Cambia la propiedad appender.file.layout.pattern a:

    appender.file.layout.pattern={"level":"%p","time":"%d{ISO8601}","thread":"%t","file":"%F","line":"%L","message":%m}%n
    

    Esto garantizará que el campo message no esté rodeado de comillas en el registro generado y que esté correctamente formateado como una cadena JSON.

    Después de realizar este cambio, tu registro JSON generado debería lucir así:

    {"level":"DEBUG","time":"2021-12-20T20:05:14,465","thread":"main","file":"App.java","line":"81","message":"!@#$%^&*()_+=~{}[]|<>?;'Texto con caracteres especiales /\"\b\f\t\r\n","crn":"5741af48-808a-4e55-8f37-681f025b1ce3", "otherProperty":"5741af48-808a-4e55-8f37-681f025b1ce3"}
    

    Ten en cuenta que el campo message ya no está rodeado de comillas, pero sigue estando correctamente formateado como una cadena JSON.

Comments are closed.