apijson-orm和apijson-framework里面打印日志都是输出到控制台,是怎么考虑的
环境信息
- 系统: Linux
- JDK: 1.8
- 数据库: 5.7.22
- APIJSON: 4.6.0
我看apijson里面,打印日志都通过这个Log类来完成。这个类注释:标明是测试使用。但是我们看apijson源码里面很多类,都是使用这个Log输出日志。关键这个类直接输出到console上。而且不支持行号,线程号等信息打印。为什么不使用slf4j这种标准的日志框架。这个是怎么考虑的。
/**测试用Log
* @modifier Lemon
*/
public class Log {
public static boolean DEBUG = true;
/**
* @param TAG
* @param msg
*/
public static void d(String TAG, String msg) {
if (DEBUG) {
System.err.println(TAG + ".DEBUG: " + msg);
}
}
为了减少外部依赖(减少库下载时间、编译时间、第三方库问题导致编译/运行失败的概率)和方便对外开源过审(License 合规)。 感谢华为工程师的反馈~
System.out.println 内部实现
内部是有锁的,如果日志这么打感觉不能上生产
System.out.println 内部实现
内部是有锁的,如果日志这么打感觉不能上生产
感谢反馈,日志后续会优化,支持通过重写方法来自定义
日志现在有优化过吗
@j2go @1139221421 不仅我自己优化过,腾讯同事和其它贡献者也提了 PR 优化日志这块 https://github.com/Tencent/APIJSON/pull/212 https://github.com/Tencent/APIJSON/pull/238
上生产环境或做性能测试前 Log.DEBUG = false 关日志,避免影响性能。