2

ロガーとパラメーターが初期化される関数を使用しました。この関数をコンソールで LogMsg と newline と呼びましたが、テキスト ファイルには 1 行しか表示されません。どうしてこんなことに?

String logmsg="Line1\n"+"Line2\n";

public static void LogMsg(Logger logger,String pathname,Level level,String logmsg){
    //logger=Logger.getLogger("LogMsg");
    FileHandler fh=null;
    try {
        fh = new FileHandler(pathname,300000,1,true);
        fh.setFormatter(new SimpleFormatter());
         LogRecord record1 = new LogRecord(level, logmsg);
         logger.addHandler(fh);
            logger.log(record1);
            fh.close();

    } catch (SecurityException e) {
        // TODO Auto-generated catch block

        //e.printStackTrace();
        System.out.println("Failed to log message due to lack of permissions.");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        //e.printStackTrace();

        System.out.println("Failed to log message");
    }


}
4

1 に答える 1

2

試す

String logmsg="Line1\r\n"+"Line2\r\n";

またはまだ良い

logmsg = String.Concat("Line1",Environment.NewLine,"Line2",Environment.NewLine);

または、 StringBuilder のようなものを使用することをお勧めします

logmsg = CreateLogMessage(new string [] {"Line1", "Line2"});

public static CreateLogMessage(string[] argLines);
{
  StringBuilder sb = new StringBuilder(argLines.Length);
  foreach(String line in argLines)
  {
    sb.AppendLine(line);
  }
  return sb.ToString();
}

Environment.Newline は、行末トークンが期待されるという点で、OS の違いを処理します。

于 2012-10-25T13:49:42.413 に答える