La investigación principal en este artículo es el contenido relevante de LOG4J, no imprimir la pila de excepciones, como sigue.
Recientemente, se encontró un fenómeno en el registro de errores del sistema en línea:
El código utiliza LOG4J para imprimir la información de la apila de tiempo de ejecución del sistema. La información de la pila no se puede ver en el registro de errores, solo hay información de excepción disponible. Este es un golpe para los programadores. Si no hay información de pila, ¿cómo puedo verificar si hay errores?
[15-15 11:29:26] [Error] [org.apache.thrift.server.abstractnonBlokingServer $ FrameBuffer: 524] ¡inesperado lanzado mientras invoca!
Más tarde descubrí que esta es una optimización de JDK. JVM optimizará el rendimiento. Si se lanza con frecuencia una excepción, se recompensará y ya no imprimirá la pila de excepciones.
También es relativamente simple resolver este problema. Si no desea verificar el registro anterior cada vez y mirar la pila, simplemente agregue -xx: -omitStackTraceInfastThrow al parámetro de inicio, puede deshabilitar la optimización y forzar la pila de excepciones a imprimir. Esto puede hacer que el archivo de registro sea demasiado grande, pero los archivos de registro en la línea de producción antes de hoy se comprimirán, por lo que no considera que el problema no sea grande.
[15-15 16:40:09] [Error] [org.apache.thrift.server.abstractnonBlokingServer $ frameBuffer: 524] ¡inesperado lanzado mientras invoca!
java.lang.nullpointerexception
en com.iqiyi.ttbrain.recommend.selector.services.filterservice.filter2 (Filterservice.java:42)
en com.iqiyi.ttbrain.recommend.thrift.ifilterservice $ procesador $ filtre2.getResult (ifilterservice.java:181)
en com.iqiyi.ttbrain.recommend.thrift.ifilterservice $ procesador $ filtre2.getResult (ifilterservice.java:166)
en org.apache.thrift.processfunction.process (ProcessFunction.Java:39)
en org.apache.thrift.tbaseprocessor.process (tbaseprocessor.java:39)
en org.apache.thrift.server.abstractnonblowingserver $ frameBuffer.invoke (abstractNonBlokingServer.java:518)
en org.apache.thrift.server.invocation.run (invocation.java:18)
en java.util.concurrent.threadpoolexecutor.runworker (threadpoolexecutor.java:1145)
en java.util.concurrent.threadpoolexecutor $ trabajador.run (threadpoolexecutor.java:615)
en java.lang.thread.run (Thread.java:745)
Lo anterior se trata de este artículo sobre la pila de excepciones LOG4J No Impresión. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!