2016-09-09 4 views
1

Я развернул простое приложение JAVA на BlueMix (Liberty для Java), которое регистрирует сообщения на консоли с помощью библиотеки JAVA Log4j.JAVA Регистрация в BlueMix (Liberty для Java)

Здесь содержание файла log4j.properties:

log4j.rootLogger = DEBUG, STDOUT 
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender 
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout 
log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 

Я не могу видеть эти журналы в где-то. Я пробовал STDOUT, и я даже попробовал старый добрый.

System.out.println(). 

Но когда я вызвать эту команду CLI:

cf logs <myApp> --recent 

Я только просматривать сообщения развертывания из Bluemix как:

2016-09-08T23:38:32.01+1000 [App/0] OUT[INFO] CWWKF0008I: Feature update completed in 10.583 seconds. 
2016-09-08T23:38:32.01+1000 [App/0] OUT [AUDIT] CWWKF0011I: The server defaultServer is ready to run a smarter planet. 

Другой альтернативой является протоколирование в файл, например, :

log4j.appender.FILE.File=${log}/logs/logging.log 

B ut Я не вижу/не могу получить доступ к файлам журнала WebSphere.

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу управлять входом в BlueMix для JAVA?

ответ

4

После долгих чтений я наконец нашел решение, которое работает.

Прежде всего, если кто-то нуждается в постоянном ведении журнала, сохранение журналов в файле не является наилучшей практикой для среды BlueMix, потому что файлы будут удалены по завершении или перезапуску серверов.
Гораздо лучшим решением для хранения журналов в базе данных, таких как MongoDB или CouchDB: http://logging.apache.org/log4j/2.x/log4j-nosql/index.html

Ниже приведен пример настройки для log4j.properties файла:

log4j.logger.MongoDB=INFO,MongoDB 
log4j.appender.MongoDB=org.log4mongo.MongoDbPatternLayoutAppender 
log4j.appender.MongoDB.Threshold=INFO 
log4j.appender.MongoDB.databaseName=<your DB name> 
log4j.appender.MongoDB.collectionName=<your collection name> 
log4j.appender.MongoDB.hostname=<your host IP> 
log4j.appender.MongoDB.port=<your host port> 
log4j.appender.MongoDB.layout=org.log4mongo.MongoDbPatternLayout 

Второе решение для постоянного протоколирования (максимум 24 часа) - использовать дополнение BlueMix под названием Monitoring & Analytics. Вот отличное видео, которое проведет вас через процесс настройки. https://www.youtube.com/watch?v=HPVd0poTSLc

Если вам нужно войти в консоль, которую можно прочитать с помощью консоли приложения в журналах на консоли BlueMix или через CLI, решение используйте регистратор, который поставляется вместе с JDK java.util.logging.Logger. Можно установить уровни лог так:

import java.util.logging.Level; 
import java.util.logging.Logger; 
Logger logger = Logger.getLogger("MyCustomlogger"); 
logger.logp(Level.INFO, "HelloWorld", "method", "INFO level message"); 
logger.logp(Level.WARNING, "HelloWorld", "method", "WARNING level message"); 
logger.logp(Level.SEVERE, "HelloWorld", "method", "SEVERE level message"); 
logger.logp(Level.FINE, "HelloWorld", "method", "FINE level message"); 
logger.logp(Level.FINER, "HelloWorld", "method", "FINER level message"); 
logger.logp(Level.FINEST, "HelloWorld", "method", "FINEST level message"); 

Теперь можно увидеть журналы, которые будут прицепных автоматически с помощью CLI

cf logs <your app name> 

Я оставил log4j.properties в пути к классам и сейчас он также выводит уровень отладки.

Я надеюсь, что это поможет кому-то в будущем.

Счастливое кодирование!

+0

ли этот подход регистрирует подробную трассировку стека для исключений? –

Смежные вопросы