Mejores prácticas para la impresión de registros

Mejores prácticas para la impresión de registros

¿Por qué debería registrarse el título?

Depuración de impresión : utilice registros para registrar variables o una determinada parte de la lógica y registre el proceso de operación del programa, es decir, qué códigos ejecuta el programa, para facilitar la resolución de problemas lógicos.

Ubicación del problema : Localice rápidamente el problema cuando el programa sea anormal o falle, para que sea conveniente resolverlo más adelante. Debido a que el entorno de producción en línea no se puede depurar, se necesita tiempo y esfuerzo para simular un entorno de producción en el entorno de prueba. Por lo tanto, es muy importante confiar en la información registrada en el registro para localizar el problema.

Monitoreo de alarmas y auditoría de comportamiento del usuario : después de formatear, el registro se puede configurar con una vista de monitoreo multidimensional a través del sistema de monitoreo relevante (AntMonitor), de modo que podamos captar el estado de operación del sistema o registrar el comportamiento de operación del usuario y recopilarlo y analizarlo. el registro para construir un uso en el mercado empresarial

¿Cuándo se registran los registros?

Cuando se inicializa el código o al ingresar la entrada lógica : los parámetros de inicio del sistema o servicio. El proceso de inicialización del módulo o componente principal a menudo depende de algunas configuraciones clave y se proporcionarán diferentes servicios de acuerdo con diferentes parámetros. Asegúrese de registrar el registro de INFORMACIÓN aquí, imprima los parámetros y la descripción del servicio del estado de finalización del inicio.

Excepciones del lenguaje de programación : este tipo de excepción detectada es a lo que el sistema le informa al desarrollador que preste atención y es un informe de error de muy alta calidad. Los registros deben registrarse adecuadamente y se debe utilizar el nivel ADVERTENCIA o ERROR de acuerdo con la situación comercial real.

Las expectativas del proceso de negocio no coinciden : Cuando los resultados en el código del proyecto no coinciden con las expectativas, también es uno de los escenarios de registro. En pocas palabras, se pueden considerar todas las ramas del proceso. Corresponde al desarrollador juzgar si la situación puede tolerarse. Los escenarios adecuados comunes incluyen parámetros externos incorrectos, problemas de procesamiento de datos que resultan en códigos de retorno que no están dentro de un rango razonable, etc.

Acciones clave de la lógica central del sistema/negocio : Las acciones comerciales desencadenadas por roles centrales en el sistema necesitan más atención y son indicadores importantes para medir el funcionamiento normal del sistema. Se recomienda registrar registros de nivel INFO.

Llamada remota de servicio de terceros : Un punto importante en el sistema de arquitectura de microservicio es que nunca se puede confiar en el tercero. Para la llamada remota de servicio de terceros, se recomienda imprimir los parámetros de solicitud y respuesta, lo cual es conveniente para localizar problemas en cada terminal, y no serán causados ​​por un tercero.La ausencia de registros de servicio se vuelve abrumadora.

日志格式一般需包含以下几类关键信息:


调用时间
日志链路id(traceId、rpcId)
线程名
接口名
方法名
调用耗时
调用是否成功(Y/N)
错误码
系统上下文信息(调用系统名、调用系统ip、调用时间戳、是否压测(Y/N))

2022-12-12 06:05:05,129 [0b26053315407142451016402xxxxx 0.3 - /// - ] INFO [SofaBizProcessor-4-thread-333] - [(interfaceName,methodName,1ms,Y,SUCCESS)(appName,ip地址,时间戳,Y)


详细日志

详细日志是用于补充摘要日志中的一些业务参数的日志文件,用于问题排查。详细日志一般包含以下几类信息:

调用时间
日志链路id(traceId、rpcId)
线程名
接口名
方法名
调用耗时
调用是否成功(Y/N)
系统上下文信息(调用系统名、调用系统ip、调用时间戳、是否压测(Y/N))
请求入参
请求出参

2022-12-12 06:05:05,129 [0b26053315407142451016402xxxxx 0.3 - /// - ] INFO [SofaBizProcessor-4-thread-333] - [(interfaceName,methodName,1ms,Y,SUCCESS)(appName,ip地址,时间戳,Y)(参数1,参数2)(xxxx)

日志记录原则

隔离性:日志输出不能影响系统正常运行;

安全性:日志打印本身不能存在逻辑异常或漏洞,导致产生安全问题;

数据安全:不允许输出机密、敏感信息,如用户联系方式、身份证号码、token等;

可监控分析:日志可以提供给监控进行监控,分析系统进行分析;

可定位排查:日志信息输出需有意义,需具有可读性,可供日常开发同学排查线上问题。

aspectos destacados del registro de impresión

1. Prevenir la ENP

2. Está prohibido utilizar System.out.println() para generar registros.
Motivo: este registro de impresión es un registro de consola y es un método sincrónico. La alta concurrencia afectará el rendimiento y los registros no se pueden recopilar de manera uniforme.

3. La aplicación no puede utilizar directamente la API en el sistema de registro (Log4j, Logback), pero debe depender de la API en el marco de registro (SLF4J, JCL – Jakarta Commons Logging).
Motivo: el sistema de registro debe desacoplarse del código

4. Declarar el objeto de la herramienta de registro Logger debe declararse como privado estático final
Razones: privado evita que otras clases utilicen ilegalmente el objeto de registro
estático evita la duplicación de nuevos objetos de registro, evita que se serialicen y reduce los riesgos de seguridad
final En el ciclo de vida de la clase, no es necesario cambiar el registrador para evitar que el registrador se modifique durante el tiempo de ejecución del programa.

5. No utilice e.printStackTrace() para imprimir registros después de detectar una excepción.
Motivo: la cadena generada por la declaración e.printStackTrace() registra información de la pila. Si la información es demasiado larga, el bloque de memoria donde se encuentra la cadena constante Se encuentra sin espacio, es decir, la memoria está llena y la solicitud del sistema se bloqueará.

6. No imprima registros sin sentido (sin contexto comercial, sin identificación de enlace de registro asociado)

7. Está prohibido usar JSON para imprimir objetos en la impresión de registros, debe usar el método toString () o ToStringBulider de Apache.

8. Prohibición de imprimir información sensible

9. Utilice el inglés tanto como sea posible para imprimir registros
Motivo: intente imprimir en inglés cuando imprima registros para evitar caracteres confusos en la impresión debido a inconsistencias entre los códigos chinos y los terminales, lo que interferirá con la localización de fallas y la solución de problemas.

10. Para llamar a una interfaz de terceros, debe imprimir los parámetros de entrada y salida.

Supongo que te gusta

Origin blog.csdn.net/HX0326CSDN/article/details/130516180
Recomendado
Clasificación