打印以归档所有数据类型(记录器)

时间:2018-06-25 08:44:06

标签: java logging

我有一个类文件,该类文件的方法带有字符串参数并输出到文件:

public static void logger(String content) {

    FileOutputStream fop = null;
    File file;
    //content = "This is the text content";


    try {

        file = new File("logs.txt");
        fop = new FileOutputStream(file);

        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        // get the content in bytes
        byte[] contentInBytes = content.getBytes();

        fop.write(contentInBytes);
        fop.flush();
        fop.close();

        System.out.println("Done");

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fop != null) {
                fop.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

我正在尝试使用此方法将跟踪日志记录添加到许多文件,并且它不仅涉及String数据类型,而且还涉及doubles等...我不确定如何将doubles / ints包含到此方法中方法和输出。

我对Java还是很陌生,所以如果这实际上是一件微不足道的任务,我深表歉意!

2 个答案:

答案 0 :(得分:0)

声明采用Object作为参数的第二种方法。

public static void logger(Object content) {
    logger(content.toString());
}

此方法将对象的字符串表示形式的记录委托给您的较早方法,无论其类型如何。

现在,您可以在字符串(例如logger()和任何其他类型(例如logger("The answer"))上调用logger(42)

请注意,装箱(将诸如int之类的原始类型包装到诸如Integer之类的对象中)会自动发生。

如果您打算一次打印多个对象,则必须提供一种采用varargs数组的方法。

public static void logger(Object... objects) {
    String msg = Stream.of(objects).map(Object::toString).collect(Collectors.joining());
    System.out.println(msg);
}

呼叫logger("The answer is ", 42)将显示“答案是42”。

答案 1 :(得分:0)

通过使用相应的包装器类,您可以得到String的双精度,长整型等表示形式。

示例:

double doubVar = 12.643;
Logger.logger( Double.toString( doubVar ) );

或整数:

int i = 2;
Logger.logger( Integer.toString( i ) );