Невозможно выполнить запись в файл в веб-приложении jsf - PullRequest
0 голосов
/ 15 ноября 2011

Я использую сервер Websphere и JSF 2.0

В моем управляемом компоненте я объявил следующее:

private final static Logger LOGGER = Logger.getLogger(ABC.class .getName());

Следующий код находится в конструкторе компонента.

try {
FileHandler handler = new FileHandler("logging.txt");
LOGGER.addHandler(handler);
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();
LOGGER.log(Level.SEVERE, stacktrace);
} catch (Exception logException) {
System.err.println("Logging error");
}

Код записывает все журналы в консоль, но не в файл.Файл журнала logging.txt также не создается.

Должен ли я создать файл самостоятельно или неверный путь.Помоги мне

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Из вашего кода:

FileHandler handler = new FileHandler("logging.txt");

Это создаст файл logging.txt в рабочем каталоге по умолчанию для сервера приложений. Точный путь к рабочему каталогу по умолчанию можно определить следующим образом:

System.out.println(new File(".").getAbsolutePath());

Файл logging.txt должен находиться в этой папке.

Однако это не лучшая идея. Использование относительных путей - плохая идея, когда вы не можете управлять рабочим каталогом по умолчанию изнутри вашего приложения. Вы должны использовать абсолютные пути вместо этого. То есть, начать с /:

FileHandler handler = new FileHandler("/path/to/logging.txt");

В Windows это будет сохранено на том же диске, где находится текущий рабочий каталог. В противном случае, если вы также захотите сменить диск, вам также понадобится префикс C: или что-то еще.

Обратите внимание, что эта проблема никоим образом не связана с JSF. У вас точно такая же проблема с любым другим API / каркасом Java.

0 голосов
/ 16 ноября 2011

Как уже отмечал BalusC.Файл журнала, вероятно, будет создан в уже развернутом приложении.

С помощью websphere вы обычно можете найти свои приложения в:

WEBSPHERE_INSTALLATION_PATH / Profiles / YOURPROFILE / instalApps / YOURAPPNAME.

После переключения в эту папку найдите ее и подпапки для ваших файлов.Я не уверен, но я не удивлюсь, если вы найдете это в WEB-INF / классах.

...