使用 log 占位符便利日志输出

介绍了如何使用日志的占位符来简化日志字符串的拼接输出

在开发活动中, 记日志是一个很常见的操作. 记日志经常涉及到拼接字符串, 因为我们常常需要把参数的值输出出来, 同时拼上字样的提示, 这样后续查看时才好知道发生了什么.

比如这样:

package net.xiaogd.sample.mybatis.controller;

import lombok.extern.slf4j.Slf4j;
import net.xiaogd.sample.mybatis.entity.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class LogController {

	@GetMapping("/hello")
	public String hello(@ModelAttribute User user) {
		log.info("username: " + user.getUsername() + " , age: " + user.getAge());
		return "hello there";
	}
}

注: 如果对这里 @Slf4j 式注入 log 变量的写法有疑问, 请参考: 使用 lombok @Slf4j 注解简化日志功能的引入

这样的方式一旦参数多了, 就会显得很凌乱, 写起来也不方便, 看上去也是支离破碎的.

很多人可能因此就不去记日志了, 或者只记很少的变量的值, 给后续的排查问题就带来了麻烦.

继续阅读

利用 String format 方法及占位符优雅拼接字符串

介绍了 Java 语言里如何使用 String.format 去优雅地拼接字符串

不论是哪个编程语言, 拼接字符串都是一个频繁的操作, 很多的语言都支持通过重载"+"号运算符来拼接字符串, 这也是最常见快捷及直观的方式.

除了用"+"号拼接外, 有的语言还支持更先进的拼接方式, 比比较新版本的 javascript 语言还支持比较优雅的利用 ${XXX} 的方式去传递变量值, 这就已经基本接近了很多模板技术的写法了, 比如这样:

let name = '小明';
let age = 20;
console.log(`他的名字叫${name}, 他今年${age}岁.`); // 注意字符串用键盘左上角的撇号(`)括起来而不是引号

继续阅读