字符串格式和日志记录原始类型 - Java
String Format and Logging primative types - Java
我正在尝试编写一个 class 来环绕 Java 中的记录器 class。我的日志记录函数的形式如下:
public static void LogInfo(String fmt, Object... args) {
String callerClass = walker.getCallerClass().getName();
logger.info(String.format("[INFO] [%s] " + fmt, callerClass, args));
}
我遇到的问题是尝试记录原始类型,bool
、int
、double
等。我阅读了一些关于 "Autoboxing" 的内容并思考这对我有用,但不是。当我尝试登录时,例如
int i = 123;
Log.LogInfo("log a number: %d", i);
我得到的错误是:
Exception in thread "main" java.util.IllegalFormatConversionException: d != [Ljava.lang.Object;
我通常不是 Java 程序员,所以不确定如何解决这个问题。任何帮助将不胜感激!
谢谢
尝试
String callerClass = walker.getCallerClass().getName();
logger.info(String.format("[INFO] [%s] ", callerClass) + String.format(fmt, args));
问题是当使用 callerClass 和 args 调用 String.format() 时,Java Varargs 创建了一个包含字符串和数组的新数组,String.format( ).
我正在尝试编写一个 class 来环绕 Java 中的记录器 class。我的日志记录函数的形式如下:
public static void LogInfo(String fmt, Object... args) {
String callerClass = walker.getCallerClass().getName();
logger.info(String.format("[INFO] [%s] " + fmt, callerClass, args));
}
我遇到的问题是尝试记录原始类型,bool
、int
、double
等。我阅读了一些关于 "Autoboxing" 的内容并思考这对我有用,但不是。当我尝试登录时,例如
int i = 123;
Log.LogInfo("log a number: %d", i);
我得到的错误是:
Exception in thread "main" java.util.IllegalFormatConversionException: d != [Ljava.lang.Object;
我通常不是 Java 程序员,所以不确定如何解决这个问题。任何帮助将不胜感激! 谢谢
尝试
String callerClass = walker.getCallerClass().getName();
logger.info(String.format("[INFO] [%s] ", callerClass) + String.format(fmt, args));
问题是当使用 callerClass 和 args 调用 String.format() 时,Java Varargs 创建了一个包含字符串和数组的新数组,String.format( ).