关于log日志的问题,如何打印最好?

日志怎么打印最好?
如下图,我的想法是打印堆栈信息到日志中,log.error("格式化企业信息失败{}", e);
再用throw new ServiceException("企业信息获取失败,请稍后再试"); 反馈错误信息给前端
但是这样的话,属于重复抛出异常。
正确的写法应该是什么样的?

img

把代码中的{}换成%s试试,如下

log.error("格式化企业信息失败%s", e);

你好。如果你在全局异常处理中捕获到即将反馈给前端的异常,并对异常信息进行获取和打印到error.log中,那么此处就可以不用再log.error();来记录日志,这样就不会出现在日志文件中重复记录异常信息的问题了。
在全局异常处理类也可以获取到异常堆栈信息,可以统一在那里打印。

catch (Exception e) {
    log.error("格式化企业信息失败", e);
    throw new ServiceException("企业信息获取失败,请稍后再试");
}
public class ServiceException extends RuntimeException {
    private String errorMessage;
    
    public ServiceException(String errorMessage) {
        this.errorMessage = errorMessage;
    }
    
    // 可以根据需要添加其他构造函数或方法
    // ...
    
    public String getErrorMessage() {
        return errorMessage;
    }
}




try {
    // 业务逻辑代码
} catch (ServiceException e) {
    log.error("格式化企业信息失败", e);
    String errorMessage = e.getErrorMessage();
    // 返回错误消息给前端
}