2016-09-09 2 views
1

Java Log4j 라이브러리를 사용하여 콘솔에 메시지를 기록하는 간단한 Java 응용 프로그램을 BlueMix (Java 용 Liberty)에 배포했습니다. 여기Java Logging BlueMix (Java 용 Liberty)

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 명령을 호출 할 때 : 다른 대안은 파일 등을 기록하는 것입니다

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. 

:

cf logs <myApp> --recent 

난 단지 같은 Bluemix에서 배포 메시지 참조 :

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

B ut은 WebSphere 로그 파일을 보거나 액세스 할 수 없습니다.

누군가가 Java 용 BlueMix에서 어떻게 로깅을 관리 할 수 ​​있습니까?

답변

4

많은 독서 끝에 마침내 작동하는 해결책을 발견했습니다.

우선 누군가가 지속적 로깅을 필요로하는 경우 파일을 로그에 저장하는 것이 서버가 종료되거나 다시 시작될 때 파일이 삭제되기 때문에 BlueMix 환경에서는 권장되지 않습니다. 지속적인 기록 에 대한

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 

두 번째 솔루션 : 여기

http://logging.apache.org/log4j/2.x/log4j-nosql/index.html는 log4j.properties 파일에 대한 예제 설정입니다 :
훨씬 더 나은 솔루션은 MongoDB를 또는 CouchDB를 같은 데이터베이스에 로그를 저장하는 것입니다 (최대 24 시간 동안)
은 모니터링 & Analytics라는 BlueMix 애드온을 사용합니다. 다음은 설정 과정을 안내하는 유용한 동영상입니다. 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"); 

이제 하나의 내가 클래스 경로에 log4j.properties에게를 떠나 지금

cf logs <your app name> 

CLI

를 통해 자동으로 붙여됩니다 로그를 볼 수 있습니다 디버그 수준도 로그 아웃합니다.

앞으로 도움이되기를 바랍니다.

해피 코딩!

+0

이 접근법은 예외에 대한 자세한 스택 추적을 기록합니까? –