繁体   English   中英

我的记录仪的printwriter问题

[英]printwriter problems with my logger

我正在创建一个logger类,并且将代码从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无效,因此它不返回要写入的字符串。 而且WriteLog已经写入了您给它提供的String,因此可以使用writer.write()方法,也可以使用WriteLog方法(具有相同的作用)。

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

要么

WriteLog(GetLevelString(level) + msg);

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM