Tag: Cloud Foundry

记录云原生应用

我的日志文件在哪里? 在回答这个问题之前,让我解释一下上下文。 我在云开发领域工作,我们有一种方法,称为12因素应用程序。 Logs是12个因素之一,这是如何定义该因素的方法。 十二要素应用程序永远不会将自己的输出流路由或存储。 它不应尝试写入或管理日志文件。 而是,每个正在运行的进程将其未缓冲的事件流写入stdout。 在本地开发期间,开发人员将在其终端的前台查看此流,以观察应用程序的行为。 如果您不熟悉12因子应用程序,则可在此处获取有关它的更多信息。 但这对我作为开发人员意味着什么? 答案很简单,我将所有日志都写到stdout。 例如,我迅速编写了下一个很酷的Web服务。 然后,您至少需要这两行内容才能写入stdout。 //禁用缓冲以直接写入stdout setbuf(stdout,nil) 打印(“此行将被打印到标准输出。”) 就是这样,好的,我要说实话,您看到3行代码,但是注释仅用于解释,抱歉。 顺便说一下, setbuf由标准C库提供。 如果您需要不同的日志级别(如调试,错误等),那么您可能对库更感兴趣,库对此提供了支持,并且对日志行的格式也有帮助。 如果我们扩展快速应用程序,那么“ HeliumLogger”将是一个不错的选择。 这个记录器也只写到标准输出,这就是我们需要的一切。 让我们谈谈不同的环境。 如果您在本地计算机上进行开发,则可以在终端中查看应用程序的日志。 但这不是您的应用程序所在的地方。 如果您的应用程序是在Cloud Foundry(CF)提供程序之一上运行的,则可以使用cloud Foundry cli“ cf logs my-swift-app”获取应用程序的日志。 这是可能的,因为Cloud Foundry中的日志路由是由运行时管理的,而输出的一个选项可能是Cloud Foundry cli。 bash $ cf日志打印机-最近 grep APP / PROC / WEB / 0 2017–10–17T22:05:02.03 + 0200 [APP / PROC / […]

Cloud Foundry上的蒸气3

您对如何编写服务器端swift代码感兴趣,并且在第一个hello世界之后,您在脑海中听到了声音,例如“在哪里可以运行此代码”? 因此,一种解决方案是在swift运行时内的Cloud Foundry上运行它。 我知道服务器端快速是当前鲜为要求的话题,但是当我开始使用Vapor 3时,我意识到花了一些时间和一些研究才能在Cloud Foundry上运行它。 我的希望是,如果有人在那里尝试相同的内容,将会找到此博客文章,并且有助于使这些内容正常运行。 现在,让我们开始吧,让我解释一下如何将Vapor 3应用程序带到Cloud Foundry。 首先,您需要访问应在其上运行应用程序的Cloud Foundry环境。 接下来,您需要一个快速的应用程序,就我而言,它是一个简单的CRUD服务,可以处理待办事项。 作为标题 假设,此应用使用了蒸气3 Web框架。 我选择此Web框架,因为我将使用最新的Swift网络堆栈,更好地称为Swift NIO(2018年3月发布)。 Cloud Foundry(CF)的概念之一是对“ 12要素应用程序”模式的大力支持。 CF希望您遵循此模式,并按照“ 12因子应用”网页上主题3所述从环境变量读取所有配置。 在我的情况下,我必须提供一个数据库配置(PostgreSQL),并且对于cf运行时,我必须读取套接字配置,这两者都将通过环境变量提供。 服务器套接字的环境变量名称基于cf运行时。 为此,运行时使用标准变量VCAP_APP_HOST和PORT提供套接字配置。 为了简化本地开发设置,我采用了相同的方法并重用了它。 对于数据库,我使用自己的一组环境变量,并在所有变量前面都加上了PSQL *。 对于我的本地开发,我将所有内容都配置为本地资源,将套接字配置为127.0.0.1:8080,并将数据库配置为本地PostgreSQL数据库。 在CF运行时中,总是为我提供套接字配置,但是数据库变量必须由我自己提供,因此我必须将带有cf set-env的PostgreSQL变量添加到我的CF应用运行时中。 这样,我可以从cf环境中读取托管云PostgreSQL数据库实例的配置,就像在本地计算机上一样。 bash $ cf set-env snatch-todos PSQLHOSTNAME psql.clouddb.hostname.com bash $ cf set-env snatch-todos PSQLPORT 5432 bash $ cf set-env snatch-todos PSQLUSERNAME“ xxxxx” bash […]