「Java8」lambda式でdebugログを出力する方法
サンプルコード
public class LogWrapper implements Logger {
private Logger logger;
public LogWrapper(Logger logger) {
this.logger = logger;
}
/**
* lambdaのdebugメソッド
* @param func
*/
public void debug(LogArgs func) {
if (logger.isDebugEnabled()) {
String[] args = func.args();
debug(args[0], slice(args, 1));
}
}
private String[] slice(String[] strs, int start) {
final int LEN = strs.length;
if (LEN < start + 1) {
return null;
}
String[] slices = new String[LEN - 1];
for (int ix = 0 ; ix < slices.length ; ++ix) {
slices[ix] = strs[ix + start];
}
return slices;
}
使い方
log.debug( () -> new String[] {“test, {}", name});