我正在制作一个记录器类,我正在将我的代码从println语句转换为执行打印编写器,但是,出了问题,我无法弄清楚是什么。有人可以帮忙吗?我知道问题出在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));
}
答案 0 :(得分:0)
log方法给出了一个错误,因为你没有给PrintWriter中的write方法提供正确的参数。那,你试图一次写两次。
writer.write(WriteLog(GetLevelString(level) + msg));
您的方法WriteLog无效,因此它不会返回要写入的字符串。 WriteLog已经写出了你给它的字符串,所以要么使用writer.write()方法,要么使用你的WriteLog方法(它做同样的事情)。
writer.write(GetLevelString(level) + msg);
或者
WriteLog(GetLevelString(level) + msg);
希望它有所帮助。