我的记录器

时间:2016-01-13 20:26:29

标签: java logging printwriter

我正在制作一个记录器类,我正在将我的代码从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));
}

1 个答案:

答案 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);

希望它有所帮助。