java.util.logging с Websphere

Я создал динамический веб-проект с помощью IBM Rational Application Developer (RAD). Я использовал java.util.logging в качестве фреймворка для ведения журнала. Я помещаю logging.properties напрямую в WEB-INF / classes.

Проблема, с которой я столкнулся, заключается в том, что приложение не может загрузить logging.properties, даже если я поместил его в WEB-INF / classes. Я добавляю следующие общие аргументы JVM в консоль администратора WebSphere Application Server.

-Djava.util.logging.config.file="logging.properties"

Я добавляю следующий фрагмент кода в метод инициализации сервлета.

Properties prop = System.getProperties();
prop.setProperty("java.util.logging.config.file", "logging.properties");

System.out.println("Is file exists " + file.exists());
try {
    LogManager.getLogManager().readConfiguration();
} catch (IOException ex) {
    ex.printStackTrace();
}

Я отключил отладку на уровне консоли в logging.properties, поэтому я не должен получать журнал в консоли. Но в настоящее время я получаю журналы в консоли, а не в файлах журналов, о которых я упоминал в logging.properits.

logging.properties

#------------------------------------------
# Handlers
#-----------------------------------------
handlers=java.util.logging.ConsoleHandler,java.util.logging.FileHandler

# Default global logging level
.level=ALL

# ConsoleHandler
java.util.logging.ConsoleHandler.level=OFF
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

# FileHandler
java.util.logging.FileHandler.level=FINE

# Naming style for the output file:
java.util.logging.FileHandler.pattern=${SERVER_LOG_ROOT}/nyllogs/loadData.log

# Name of the character set encoding to use
java.util.logging.FileHandler.encoding=UTF8

# Limiting size of output file in bytes:
java.util.logging.FileHandler.limit=25000000

# Number of output files to cycle through
java.util.logging.FileHandler.count=2

# Style of output (Simple or XML):
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

Пожалуйста, дайте мне знать, почему приложение не может получить файл logging.properties?


person Java-Seekar    schedule 11.04.2013    source источник
comment
Попробуйте указать абсолютный путь / имя файла   -  person keuleJ    schedule 11.04.2013


Ответы (2)


Прочтите конфигурацию из входного потока, используя readConfiguration (is). Ваш код устанавливает свойство с относительным путем, но JVM не может его изучить.

Properties prop = System.getProperties();
prop.setProperty("java.util.logging.config.file", "logging.properties");

Вызов метода readConfiguration () без аргументов только перезагружает свойства, которые могут не быть загружены, поскольку ваш путь является относительным.

public void readConfiguration()
                       throws IOException,SecurityException
Reinitialize the logging properties and reread the logging configuration.

Используйте абсолютный путь к свойству или передайте Inputstream. Вот пример загрузки свойств из файла и с помощью InputStream.

person Deepak Bala    schedule 11.04.2013
comment
Спасибо Дипаку за ответ. Я пробовал оба метода, о которых вы упомянули. Я использовал Inputstream для загрузки свойств. Но не повезло. FileInputStream configFile = новый FileInputStream (/WEB-INF/classes/logging.properties); Preferences.load (configFile); LogManager.getLogManager (). ReadConfiguration (configFile); Нужно ли мне делать какие-либо дополнительные настройки в консоли администратора? - person Java-Seekar; 11.04.2013
comment
хммм ... и нет никаких исключений в файлах консоли / журнала, когда вы пытаетесь создать экземпляр файла? Вы пробовали выполнить код с помощью отладчика? - person Deepak Bala; 11.04.2013
comment
Я получаю исключение FileNotFound. java.io.FileNotFoundException: \ WEB-INF \ classes \ logging.properties (Система не может найти указанный путь.) - person Java-Seekar; 11.04.2013
comment
Это твоя проблема. Вместо этого вы должны загружать ресурс как поток из загрузчика классов. Используйте getResourceAsStream - person Deepak Bala; 11.04.2013
comment
Когда я использую getResourceAsStream, файл свойств загружается, но я получаю сообщения журнала только в консоли. Ни в каких лог-файлах. - person Java-Seekar; 11.04.2013
comment
Может быть, это специфическая проблема RAD. К настоящему времени это должно было сработать. Я не могу думать ни о чем другом. Может ли входить в журнал по известному пути, например '/ usr / var / local / logs', вместо использования переменных ${}? - person Deepak Bala; 11.04.2013
comment
позвольте нам продолжить это обсуждение в чате - person Java-Seekar; 11.04.2013

На сервере WebSphere результатом того, что вы пытаетесь сделать, будет изменение конфигурации ведения журнала не только приложения, но и всего сервера. Поскольку сама WebSphere использует java.util.logging, это будет означать, что все, что регистрируется внутри WebSphere, попадает в тот же файл, что и журналы приложения. Это было бы бессмысленно, потому что тогда вы также можете использовать стандартные файлы журнала WebSphere (SystemOut.log и trace.log).

Кроме того, поскольку WebSphere устанавливает свой собственный LogHandler, вполне вероятно, что он запретит использование метода readConfiguration().

person Andreas Veithen    schedule 11.04.2013