【发布时间】:2014-12-19 08:31:00
【问题描述】:
编辑:已修复!正在覆盖文件而不是附加到文件。
在使用前尝试使用 PrintWriter 向日志文件添加“标题”似乎有点问题,以便我的程序知道它不仅仅是一个随机文本文件。字段 output_file 指的是记录器初始化函数用于设置日志文件的参数,而 log_file 是(全局和静态)日志记录类的静态文件字段。打开日志文件检查错误后,没有标题。使用同样由 PrintWriter 执行的日志记录功能,可以提供正确的输出。难道我做错了什么? (我知道我正在重新发明轮子,因为 Java 的日志记录 API 已经存在,但我正在进行学习练习。)
//After testing to make sure the file specified does not exist
log_file=output_file;
output_file.createNewFile();
PrintWriter pw=new PrintWriter(log_file);
pw.println("**[PROGRAM_NAME Log]**");
pw.flush();
pw.close();
isInitialized=true;
编辑:该文件绝对是可写的,否则记录器本身将无法工作。此外,对于那些想知道的人,记录某些内容的代码如下(与编写标头 AKA new PrintWriter(log_file); 的一般方法相同)
PrintWriter pw = new PrintWriter(log_file);
pw.print("[INFO:] " + sdf.format(new Date())); //The variable sdf is a date formatter for timestamps.
pw.println(" " + message);
pw.close();
【问题讨论】:
-
您似乎从
log_file登录到PrintWriter,但实际文件是从output_file创建的(createNewFile())...这是正确的吗? -
@ochi 但两个变量引用同一个对象。
-
-hard disk-文件是由createNewFile()创建的,是的,但是log_file和output_file在这里本质上是一样的。 (log_file=output_file;)
-
您说日志记录也是由 PrintWriter 执行的。您是否也使用
new PrintWriter(log_file)? -
你能在写任何东西之前尝试
if (!log_file.setWritable(true)) throw new Exception("cannot write to file");并将结果添加到你的帖子中吗?
标签: java