我的记录器的打印机问题

printwriter problems with my logger

我正在制作一个记录器 class,并且我正在将我的代码从 println 语句切换到做一个 printwriter,但是,出了点问题,我无法弄清楚是什么。有人可以帮忙吗?我知道问题出在 Log 方法的某处,但我不知道如何解决它。

 package com.company;

 import java.io.PrintWriter;

 enum MessageLevel {FatalError, LesserError, Warning, Info}

 public class Logger
 {
private static PrintWriter writer;
public boolean Initialize (String logfilename)
{
    try
    {
        writer = new PrintWriter("logfile.log");
    }
    catch (java.io.FileNotFoundException e)
    {
        System.err.println("Your file " + logfilename +" is unable to open for write.\n");
    }

    writer.write("Hello World! \n");
    writer.flush();
    writer.close();

   return true;
}

private static void WriteLog (String msg)
{
    writer.write(msg);
}

private static String GetLevelString (MessageLevel level)
{
    switch (level)
    {

        case FatalError:
            return "Fatal Error: ";

        case LesserError:
            return "Lesser Error: ";

        case Warning:
            return "Warning: ";

        case Info:
            return "Info: ";
    }
    return "programmer error: missing level";
}

public static void Log (MessageLevel level, String msg)
{
    writer.write(WriteLog(GetLevelString(level) + msg));
}

log 方法给您一个错误,因为您没有为 PrintWriter 中的 write 方法提供正确的参数。那,你正试图一次写两次。

writer.write(WriteLog(GetLevelString(level) + msg));

您的方法 WriteLog 是无效的,因此它不会 return 要写入的字符串。 WriteLog 已经写入了你给它的字符串,所以要么使用 writer.write() 方法,要么使用你的 WriteLog 方法(做同样的事情)。

writer.write(GetLevelString(level) + msg);

或者

WriteLog(GetLevelString(level) + msg);

希望对您有所帮助。