java - 为什么日志消息不能\n 在文本文件中?

标签 java logging

我使用了一个初始化记录器和参数的函数。 虽然我在控制台中将此函数称为 LogMsg 和换行符,但它在文本文件中给出了一行。为什么会这样?

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");
    }


}

最佳答案

尝试

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 将根据预期的行结束标记来处理操作系统差异。

关于java - 为什么日志消息不能\n 在文本文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069960/

相关文章:

java - Android 4.4.2 Issue : javax.net.ssl.SSLHandshakeException : Failure in SSL library, 通常是协议(protocol)错误

python - 在post_save信号django中捕获logentry历史

JavaFX FXMLLoader : location is not set when loading from jar-file

grails - 登录默认软件包

logging - 哪个最好 : First Log then do the Operation OR First do the Operation then Log it?

c++ - 仅在调试时启用 Boost.Log

c# - 以编程方式从编码 UI/单元测试中获取错误消息/堆栈跟踪

java - xpath 元素识别 -- Cleaner Xpath

java - H2 数据库 - "Unknown data type",数据类型为空

java - 解压缩 tar.gz 文件时出现问题