日志常见问题

1.不要用System.out.println()

打的日志只会显示在控制台,不会进入日志文件,而且这个方法内部是用了synchronized的,是同步的

2.不要使用 e.printStackTrace()

其源码:
public void printStackTrace() {
printStackTrace(System.err);
}
也是打在控制台的

3.输出异常信息,不要用以下几种方式 ,它们都不会打印堆栈异常信息:

log.error(“错误信息:”, e.getMessage());
log.error(“错误信息:” + e);
log.error(e.getMessage());
log.error(e.getStackTrace().toString());

只有使用log.error("错误信息:", e.getMessage());
即使用方法public void error(String msg, Throwable t);
才能打印详细的堆栈异常信息

4.禁止在线上环境开启debug,很多框架中有大量debug代码,记录这些没太大意义
5.日志规范,多用占位符,不要用+来拼字符串

@Test
public void print() {
log.info(“包裹号:{}开始收货”,“O2338484”);
log.info(String.format(“包裹号:%s开始收货”,“O2338484”));
log.info(String.format(“一共有包裹号%d个包裹”,5));
}

打印结果:
包裹号:O2338484开始收货
包裹号:O2338484开始收货
一共有包裹号5个包裹

现在系统常用日志框架的是:Slf4J +log4j2(两者关联需要使用log4j-slf4j-impl桥接包)

log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),是一个日志解决文案

Log4j中有三个主要组成部分

loggers: 负责捕获记录信息。

appenders : 负责发布日志信息,以不同的首选目的地。

layouts: 负责格式化不同风格的日志信息。

SLF4J 全称 Simple Logging Facade for Java(简单日志门面),本身不提供日志具体实现,只对外提供接口或门面。

因此它不是具体的日志解决方案,而是通过Facade Pattern门面模式对外提供一些Java Logging API。

这些对外提供的核心API其实就是一些接口以及一个LoggerFactory的工厂类

JAVA日志体系:
日志的进化:https://www.jianshu.com/p/39ced06944a2

log4j2配置文件log4j2.xml详解(转载):
https://www.cnblogs.com/new-life/p/9246143.html

想要更新详细的配置文件:http://www.mamicode.com/info-detail-2109359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值