如何在ABAP Netweaver和CloudFoundry裏記錄並查看日誌

Netweaver

要記錄日誌須要有一個checkpoint group,能夠自行建立也可使用標準的。這裏我重用標準的group:DEMO_CHECKPOINT_GROUP。java

tcode SAAB,點Display <->Activate進入編輯模式,將Logpoints設置爲"Log",日期設爲Today,意爲當天生效。

Netweaver的日誌記錄大可能是基於用戶級別的,這一點比較方便。給想打開日誌記錄的用戶建立一個打開日誌開關的配置:

新建一個report名稱爲ZCONTEXT, 下面代碼的含義是把當前report名稱(包含在環境變量sy-cprog)和當前report的運行環境(online運行仍是offline運行)寫入該checkpoint group。由於可能有其餘人也會使用該group,因此用SUBKEY區分不一樣的用戶。git

LOG-POINT ID demo_checkpoint_group
SUBKEY sy-uname
FIELDS sy-batch sy-cprog.


執行完report後返回SAAB便可查看到記錄的日誌。

雙擊能看到記錄的明細。
github

CloudFoundry

總的guideline在SAP官方Github上有。apache

這裏簡述要點。api

SAP雲平臺的CloudFoundry環境裏的日誌記錄推薦使用slf4j(Simple Log Facade for Java)。即Java代碼裏使用slf4j提供的接口進行日誌記錄,而具體的日誌記錄實現能夠經過配置文件來指定。maven

我作了一個例子,所有源代碼在個人github上。
個人例子使用log4j2做爲日誌記錄的實現。ide

(1) 在Java項目的pom.xml裏定義slf4j和log4j2的版本號。ui

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <cf-logging-version>2.1.5</cf-logging-version>
  <log4j2.version>2.8.2</log4j2.version>
  <slf4j.version>1.7.24</slf4j.version>
</properties>

在pom.xml文件的dependency區域維護相關的dependency:spa

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
</dependency>

<dependency>
  <groupId>com.sap.hcp.cf.logging</groupId> 
  <artifactId>cf-java-logging-support-log4j2</artifactId>
  <version>${cf-logging-version}</version>
</dependency>

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-slf4j-impl</artifactId>
  <version>${log4j2.version}</version>
</dependency>

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>${log4j2.version}</version>
</dependency>

<dependency>
  <groupId>com.sap.hcp.cf.logging</groupId>
  <artifactId>cf-java-logging-support-servlet</artifactId>
  <version>${cf-logging-version}</version>
</dependency>

(2) 在CLASSPATH下新建log4j2.xml, 使用以下源代碼:3d

<Configuration status="warn" strict="true"
packages="com.sap.hcp.cf.log4j2.converter,com.sap.hcp.cf.log4j2.layout">
<Appenders>
<Console name="STDOUT-JSON" target="SYSTEM_OUT" follow="true">
<JsonPatternLayout charset="utf-8" />
</Console>
<Console name="STDOUT" target="SYSTEM_OUT" follow="true">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} [%mdc] - %msg%n" />
</Console>
</Appenders>
<Loggers>
<!-- Jerry: Log level: INFO -->
<Root level="${LOG_ROOT_LEVEL:-INFO}">
<AppenderRef ref="STDOUT-JSON" />
</Root>
<Logger name="com.sap.hcp.cf" level="${LOG_HCP_CF_LEVEL:-INFO}" />
</Loggers>
</Configuration>

(3) 在SAP雲平臺Cockpit裏建立一個新的log instance:


取名爲jerry-log:

(4) 代碼裏的使用:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger LOGGER = LoggerFactory.getLogger(ConnectivityServlet.class);

而後使用LOGGER.info 記錄日誌。

(5) 如何查詢記錄的日誌:
點擊Logs標籤頁->Open Kibanna Dashboard, 能看到上圖"Diablo Connecting to backend system"對應的日誌:

在log明細裏能看到以前在SAP雲平臺Cockpit裏建立的Log service實例。

要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"

相關文章
相關標籤/搜索