Файл журнала отправки с кодовым именем

#logging #codenameone

#ведение журнала #codenameone

Вопрос:

Я только что прочитал Api класса Log и попробовал его, но у меня ничего не получилось. Я попробовал следующий код с эмулятором:

     String appHomePath = FileSystemStorage.getInstance().getAppHomePath();
    String fileName = (appHomePath   "codenameOne.log");
    Log.getInstance().setFileURL(fileName);
    Log.p("This is a stupid log message!");
    Log.getInstance().sendLog();
  

appHomePath получает значение "file://home/" , поэтому URL-адрес, установленный для файлов журнала, равен "file://home/codenameOne.log"

После этого ничего не произошло. Куда отправляется содержимое журнала? В JavaDoc есть подсказка, что он отправляется в облако. Какое облако? Возможно ли, что приложение не имеет прав на запись в каталог «/ home»?

Затем я попытался отправить его по электронной почте:

 Message m = new Message("Body of message");
m.getAttachments().put(Log.getInstance().getFileURL(), "text/plain");
Display.getInstance().sendMessage(new String[]{"dummy@address.de"}, "Log file", m);
  

Это приводит к открытию окна почтового клиента с правильным адресом и основным текстом, но при этом файл журнала вообще не прикреплен. Может быть, потому, что файла журнала не существует?

Есть предложения? Мне это нужно.

Ответ №1:

Log.sendLog это профессиональная функция. Он конфликтует с такими функциями, как setFileURL .

Подход с вложением должен работать, я не уверен, что у вас там не получается.

Комментарии:

1. После установки приложения на мой смартфон оно работало правильно, что означает, что файл журнала прикреплен к почте. Отправка файлов журнала по электронной почте не работает из эмулятора, использующего Thunderbird в качестве почтового клиента. Я не знаю, является ли причиной почтовый клиент или эмулятор. Должен ли он работать с emualtor и другими почтовыми клиентами?

2. Симулятор просто использует mailto: URL, поскольку эта функциональность недоступна в JavaSE