JAVA登录BlueMix(Liberty for Java)

时间:2016-09-09 04:39:51

标签: java logging ibm-cloud websphere-liberty

我在BlueMix(Liberty for Java)上部署了一个简单的JAVA应用程序,它使用JAVA Log4j库将消息记录到控制台。

这里是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 

但我也看不到/访问WebSphere日志文件。

有人可以告诉我如何管理BlueMix for JAVA的日志记录吗?

1 个答案:

答案 0 :(得分: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小时)是使用名为Monitoring&amp;的BlueMix插件。 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 ,现在它也会注销调试级别。

我希望将来可以帮助某人。

快乐的编码!