云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站空间_cdn页面篡改_优惠券

小七 141 0

简介

应用程序日志记录是SAP CF提供的一项服务,帮助开发人员识别应用程序中的错误,并帮助进行故障排除以找到错误的根本原因。Loggregator是云铸造组件,负责简化来自应用程序和其他与应用程序交互的系统组件的日志。虽然这个组件可以用来创建和管理日志,物联网展会,但这样做效率不高。例如,当日志数量过多时,Loggregator倾向于覆盖或删除一些日志行,这会妨碍日志分析。因此,CF提供了专门的应用程序日志服务,以支持编写和分析结构化日志。

本博客的存储库:应用程序日志POC

编写结构化日志

有许多库为在Java应用程序中编写日志提供支持,如logback、log4j2等。在本博客中,我们将只使用log4j2。要使用log4j2在任何Java应用程序中编写日志,首先必须通过pom.xml文件接下来,我们必须使用LoggerFactory类创建Logger类的实例。在LoggerFactory的getLogger()方法中,有哪些云服务器,我们必须传递需要logger的类的引用。语法如下:

现在,我们可以使用LOGGER对象在需要的地方写日志。例如,在LogController的任何方法中,我们都可以按如下方式写入日志。

只要API的endpoint"/logs/demo"被命中,淘客qq群,就会写入日志,因此可以用来跟踪endpoint命中。

SAP CP Cloud Foundry提供应用程序日志服务。我们可以使用首选计划创建此服务的实例,并使用out应用程序绑定它,如本指南所示。在这个博客中,我们使用了服务的"精简"计划。绑定完成后,我们必须重新启动应用程序。现在,我们可以访问任何写入日志的端点,例如"/logs/demo"端点将在错误级别写入日志。要查看日志,我们可以在驾驶舱中打开应用程序并转到"日志"部分。

我们可以检查最近的日志是否仅来自我们的请求。但这些日志在这里看不到。现在让我们看看如何更好地可视化日志。

SAP Cloud Foundry使用ELK stack(Elasticsearch、Logstash和Kibana)存储、分析和可视化来自Cloud Foundry应用程序的应用程序日志。如果单击"打开Kibana仪表板"按钮,我们将导航到CF上的Kibana仪表板。Kibana仪表板可在"logs."中找到,如https://logs.cf.sap.hana.ondemand.com/.

在Kibana中,打开"请求和日志"仪表板。在这里,我们可以看到请求日志和应用程序日志,如下所示:

如果我们检查应用程序日志的级别,它将显示为INFO(信息),尽管日志是在错误级别写入的。这是因为我们编写的日志是默认的非结构化日志。但是,由于Cloud Foundry使用ELK堆栈进行日志分析,Elasticsearch使用JSON数据,因此CF默认情况下会将控制台日志转换为JSON日志,但它无法设置很多值,如level、logger等的值。要获取这些值并显示正确的日志,我们必须使日志结构化,我们将在下一步进行操作。

要编写结构化日志,我们必须做一些事情。首先,我们需要使用cfjavalogging支持库,它提供了定制的模式布局,我们可以使用这些布局来构建日志。在这个博客中,我们将使用JSONPatternLayout。要获得模式布局,我们必须导入另一个依赖项,如下所示。

此外,如果您使用Spring boot,请确保删除默认的starter日志库。

现在,我们必须通过创建一个名为"log4j2.xml"的新文件来定义日志配置。对于spring引导应用程序,我们可以在"src/main/resources"文件夹中创建这个文件。这个文件的内容如下:

在这个文件中,我们定义了JSONPatternLayout作为Appender布局,它可以将标准日志转换成适当的JSON日志,供Elasticsearch使用。在这里,我们还将根日志级别细化为WARN。因此,任何低于警告级别的日志都不会被Logstash获取。只有"警告"和"错误"日志级别才可见。在进行这些更改之后,我们可以重建和部署应用程序。现在,新云,如果我们点击相同的端点"/logs/demo",那么我们将能够看到关于Kibana仪表板上写的日志的其他正确信息,如下所示:

记录自定义度量

有时,我们需要在应用程序的上下文中跟踪一些自定义度量的值。因此,我们倾向于在日志中写入这些度量的值。但是,这些日志只是文本,很难分析或可视化。cfjava日志记录支持提供了一种编写这些定制度量的方法,这样这些度量也将转换为正确的JSON键值对。因此,它们可以在Kibana中进一步可视化。为了编写这些指标,我们遵循一个特定的结构。首先,我们必须导入一个函数,它将帮助我们编写一个自定义字段,如下所示。

现在,我们可以用名为"message"的自定义字段编写一个日志,该字段的值为"custom log message",如下所示。