Java怎样避免过度打印日志导致性能题目
前言
在项目开辟中打印日志是非常重要的,可以帮助我们排查、定位很多很难发现的题目。但是日志并不是越多越好,如果过度打印,大量的日志写入服务器的磁盘里面,反而会出现很多题目。
一样平常开辟怎样打印日志
1、优化日志结构
(1)不要打印一些没用的日志,也不要在 for 循环里面去打印
一样平常开辟中通常会首先把接口的入参、出参给打印出来,这样方便查找初始参数和最闭幕果,方便查看题目。其他可以根据本身的实际环境举行打印。
示例:
- public String testLogWrite(TestLogInDTO testLogInDTO) {
- log.info("名字是:{},测试日志打印入参:{}", testLogInDTO.getName(), JSON.toJSONString(testLogInDTO));
- StringBuilder stringBuilder = new StringBuilder("他的名字是:");
- stringBuilder.append(testLogInDTO.getName()).append(",家庭住址是:").append(testLogInDTO.getAddress());
- log.info("测试日志打印出参:{}", stringBuilder.toString());
- return stringBuilder.toString();
- }
复制代码 (2)不要做字符串的拼接,多用占位符
每位如果使用字符串拼接,每一次字符串拼接都会创建新的字符串对象,尤其在 for 循环中,更是浪费资源,我们应该使用占位符方式举行日志打印。
错误示例:
- log.info("测试日志打印入参是:" + JSON.toJSONString(testLogInDTO));
复制代码 准确示例:
- log.info("名字是:{},测试日志打印入参:{}", testLogInDTO.getName(), JSON.toJSONString(testLogInDTO));
复制代码 (3)必要时增加日志开关
(4)准确使用 INFO、ERROR
一样平常开辟中用到最多的就是 INFO,但是并不是全部的日志都要用到 INFO 。我们要合适的去使用 INFO、ERROR 等日志等级。比如笔者在一样平常开辟中,会把 ERROR 等级写在 catch 异常代码块中,而不是使用 INFO。
2、异步化写日志
3、日志降级
完备示例
- import com.alibaba.fastjson2.JSON;import com.ruoyi.system.dto.TestLogInDTO;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Service;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;@Servicepublic class LogWriteService { private static final Logger log = LoggerFactory.getLogger(LogWriteService.class); public String testLogWrite(TestLogInDTO testLogInDTO) { log.info("名字是:{},测试日志打印入参:{}", testLogInDTO.getName(), JSON.toJSONString(testLogInDTO));
- String a = "251220aa24"; SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd"); try { Date date = f.parse(a); } catch (ParseException e) { log.error("时间转换异常,具体错误信息是:{}", e.getMessage()); } StringBuilder stringBuilder = new StringBuilder("他的名字是:"); stringBuilder.append(testLogInDTO.getName()).append(",家庭住址是:").append(testLogInDTO.getAddress()); log.info("测试日志打印出参:{}", stringBuilder.toString()); return stringBuilder.toString(); }}
复制代码 打印结果:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |