考虑这段代码:
if (param1 == null || param2 == null) {
logger.error("Failed to do stuff.");
logger.debug("param1: " + param1);
logger.debug("param2: " + param2);
}
它可读性很强,但在多线程环境中,逻辑原子日志消息可以分为三个部分。
现在,部分解决方案很简单,并且可读性不会受到太大影响:
if (param1 == null || param2 == null) {
logger.error("Failed to do stuff.");
logger.debug(
"param1: " + param1 + System.getProperty("line.separator")
+ "param2: " + param2
);
}
如果稍微改变记录器输出是可以的,你可以写:
if (param1 == null || param2 == null) {
String message = "Failed to do stuff.";
if (logger.isDebugEnabled()) {
message += System.getProperty("line.separator")
+ "param1: " + param1 + System.getProperty("line.separator")
+ "param2: " + param2;
}
logger.error(message);
}
干净的日志,但更丑陋的代码......
或者,您可以编写:
if (param1 == null || param2 == null) {
synchronized (logger) {
logger.error("Failed to do stuff.");
logger.debug("param1: " + param1);
logger.debug("param2: " + param2);
}
}
你推荐什么,为什么?