我的记录器的打印机问题
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);
希望对您有所帮助。
我正在制作一个记录器 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);
希望对您有所帮助。