考慮以下代碼:最佳實踐在多線程環境中調用
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
);
}
如果稍微改變記錄儀輸出是OK,你可以寫:
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);
}
}
你有什麼建議?爲什麼?
您正在使用哪個日誌記錄庫? – fglez 2013-05-03 12:45:37