SpringBoot avanzado: configuración y funcionamiento a nivel de registro
1. Nivel de registro
- rastro: nivel más bajo
- depuración: para la depuración, generalmente se usa para rastrear el progreso del programa
- info: para grabar, generalmente se usa para registrar el comportamiento del programa
- advertir: advertencia
- error: error
- fatal: error catastrófico, nivel más alto
2. Establecer el nivel de registro
El nivel de registro predeterminado de SpringBoot es info, lo que significa que solo se genera información o registros de nivel superior en la consola.
Si desea cambiar temporalmente el nivel de registro para la depuración durante la fase de desarrollo, puede usar la siguiente configuración simple:
debug: true
Para establecer realmente el nivel de registro del proyecto, debe hacer esto:
logging:
level:
root: info
com.mzz.example.controller: debug
com.mzz.example.service: debug
El nivel del registro se establece de acuerdo con el grupo o paquete, donde el grupo raíz es todo el proyecto
Pero es engorroso configurar el nivel de registro en unidades de paquetes, por lo que puede configurar el grupo usted mismo y luego configurar el nivel para cada grupo por separado:
logging:
group:
server: com.mzz.example.service, com.mzz.example.controller
sql: com.mzz.example.mapper
level:
root: info
server: debug
sql: trace
3. Imprima el registro
Para imprimir el registro, primero debe obtener el objeto de registro, de la siguiente manera:
@RestController
@RequestMapping("/user")
public class UserController {
public static final Logger log = LoggerFactory.getLogger(BookController.class);
}
Dado que esta línea de código es relativamente fija, se puede reemplazar por la anotación @Slf4j en Lombok, de la siguiente manera:
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
}
Después de obtener el objeto de registro, llame al método para imprimir el registro y use cada nivel como el nombre del método para imprimir el registro del nivel correspondiente:
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@PostMapping
public Result save(@RequestBody User user) {
log.debug("尝试保存新用户:{}", user);
boolean flag = bookService.save(user);
if (!flag) {
log.error("保存新用户失败:{}", user);
}
log.info("已保存新用户:{}", user);
return Result.success();
}
}
Al imprimir registros, {} se puede usar como marcador de posición y la matriz se pasa más tarde
Además, no existe un método de impresión de registro de nivel fatal, porque fatal se refiere a un error grave que hará que el programa se bloquee, y el sistema de registro de bloqueo del programa no puede continuar ejecutándose, por lo que imprimir registros de nivel fatal no tiene sentido.
4. Formato de registro personalizado
Configure la propiedad logging.pattern.console para personalizar el formato del registro de impresión de la consola, de la siguiente manera:
logging:
pattern:
console: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n"
El anterior es el formato de registro predeterminado de SpringBoot, consulte: https://blog.csdn.net/qq_34049732/article/details/116722116
5. Registro de documentación
Vea el siguiente ejemplo:
logging:
file:
name: log/server.log # 指定文件名称以及路径:启动路径下的 log 文件夹下
# path: log/ # 指定日志文件路径,不含名称,默认为 spring.log
logback:
rollingpolicy:
max-file-size: 1MB # 指定文件最大规格
file-name-pattern: log/server_%d{
yyyy-MM-dd}_%i.log # 指定文件名称格式以及路径
Los registros rodantes pueden establecer el tamaño máximo de cada registro
La configuración del registro continuo aún necesita establecer el nombre del registro, como server.log arriba, que contiene el registro más reciente
Solo necesita configurar un logging.file.name y logging.file.path, si existen al mismo tiempo, la ruta no será válida