【发布时间】:2016-05-20 12:12:32
【问题描述】:
我一直在尝试使用日志类来使用本地存储来捕获一些奇怪的特定于设备的故障。当我进入 Log 类并跟踪代码时,我注意到似乎是一个错误。
当我调用 p(String) 方法时,它会调用 getWriter() 来获取 Writer 的“输出”实例。它会注意到输出为空,因此它调用 createWriter() 创建它。由于我没有设置文件 URL,因此执行以下代码:
if(getFileURL() == null) {
return new OutputStreamWriter(Storage.getInstance().createOutputStream("CN1Log__$"));
}
在模拟器上,我注意到该文件已创建并包含日志信息。
所以在我的应用程序中,我想在检测到错误后显示日志(以进行调试)。我调用 getLogContent() 将其作为字符串检索,但它做了一些奇怪的事情:
if(instance.isFileWriteEnabled()) {
if(instance.getFileURL() == null) {
instance.setFileURL("file:///" + FileSystemStorage.getInstance().getRoots()[0] + "/codenameOne.log");
}
Reader r = new InputStreamReader(FileSystemStorage.getInstance().openInputStream(instance.getFileURL()));
我看到的主要问题是它使用的文件 URL 与默认编写器位置不同。并且由于 Writer 的创建没有设置 File URL,getLogContent 方法将永远不会看到记录的数据。 (我遇到的另一个问题是样式问题,即获取内容的方法不应该为实例持续设置该内容的位置,但这是另一回事。
作为一种解决方法,我认为我可以在应用程序的开头调用“getLogContent()”,它应该将文件 url 正确设置在稍后将检索它的位置。接下来我会测试一下。
同时,这是一个错误,还是我从用户角度不理解的功能?
【问题讨论】:
标签: codenameone