将输出格式化为文件

时间:2018-06-27 13:13:36

标签: java logging

我有一个将输出记录到文件中的类方法,我想对格式指定进行更多控制。

public class Logger {

    private static boolean FIRST_CALL = true;

    public static void log(String content) {



        try {
            PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("debug.txt", !FIRST_CALL)));

            if(FIRST_CALL) {
                FIRST_CALL = false;
            }

            out.println(content);
            out.close();
        } catch (IOException e) {
            //exception handling left as an exercise for the reader
        }
    }

}

我不确定该怎么做。将println更改为printf会产生很多问题。

例如,我按如下方式调用该方法:

Logger.log("testval=" + testVal);

例如,testVal将是double。它会输出1.9547E-5,但实际上我想用十进制格式。

任何帮助表示赞赏。我是Java的新手。

3 个答案:

答案 0 :(得分:0)

看看MessageFormat类。

您可以做类似的事情

Logger.log(MessageFormat.format("testval={0}", testVal));

像printf一样,您可以配置输出格式。有关所有选项,请参见Javadoc。

答案 1 :(得分:0)

您可以使用String.format()。 在您的示例中:

Logger.log(String.format("testval=%f", testVal));

答案 2 :(得分:0)

好吧,如果要将您的代码改成一倍,我会这样写:

 private void log(double )
 {
      // use try-with-resource - it's better
      try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("debug.txt", !FIRST_CALL))))
      {
          if(FIRST_CALL) {
              FIRST_CALL = false;
          }

          out.printf("value = %5.7f\n", d);
          out.close();
     } catch (IOException e) {
          e.printStackTrace();
          throw new RuntimeException(e);
     }
 }

并调用此代码:

   log(1.9547E-5)