java.util.logging.Logger方法可以在Google App Engine上失败吗?
作者:互联网
Google App Engine使用java.util.logging.Logger(JUL)进行所有日志记录.因此,要记录任何内容(然后通过LogService检索它),您只需像平常一样使用JUL进行记录:
private Logger logger = Logger.getLogger(this.class.getName());
// ...
public void doWhatever() {
logger.info("This will be logged.");
}
但是,如果您阅读GAE教程/指南中的各种服务API(Memcache,Mail,Datastore等),他们都会重申您应该始终对其服务中断的可能性进行编码. GAE甚至提供了一个CapabilitiesService,您可以在调用任何服务方法之前检查它以查看当前是否启用该服务.
所以我问:JUL日志操作是否有可能失败:
logger.info(“Can I ever fail and not get logged?”);
如果没有,为什么?如果是这样,在JUL窒息的情况下,我可以做些什么来“故障转移”?提前致谢.
解决方法:
我遇到了同样的问题,是的,日志服务可能会失败而没有错误.你将获得的最好成果(直到GAE改进了日志服务API),就是每分钟唤醒一个工作,然后执行logger.info(…).
然后运行LoggingService #fetchLogs(…),过滤以仅检索包含最新记录器调用的AppLogLine,并检查以确保您可以检索它.如果你不能,那么logger.info(…)失败了,你可以让你的应用程序做出反应.
我总是在我的GAE应用程序上公开一个安全的servlet来ping功能服务,并要求对每个服务进行状态检查.如果服务被禁用或关闭以进行维护,我有一个外部监视器(每5分钟检查一次这个URL)给我发短信.您可以将此“日志检查”cron作业绑定到该类服务检查中.
标签:java,google-app-engine,java-util-logging,logging 来源: https://codeday.me/bug/20190625/1286084.html