如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

i042416發表於2018-06-11

Netweaver

要記錄日誌需要有一個checkpoint group,可以自行建立也可以使用標準的。這裡我重用標準的group:DEMO_CHECKPOINT_GROUP。

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


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

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


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

新建一個report名稱為ZCONTEXT, 下面程式碼的含義是把當前report名稱(包含在環境變數sy-cprog)和當前report的執行環境(online執行還是offline執行)寫入該checkpoint group。因為可能有其他人也會使用該group,所以用SUBKEY區分不同的使用者。
LOG-POINT ID demo_checkpoint_group
SUBKEY sy-uname
FIELDS sy-batch sy-cprog. 
如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

執行完report後返回SAAB即可檢視到記錄的日誌。


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

雙擊能看到記錄的明細。


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

CloudFoundry

總的guideline在SAP官方Github上有。

這裡簡述要點。

SAP雲平臺的CloudFoundry環境裡的日誌記錄推薦使用slf4j(Simple Log Facade for Java)。即Java程式碼裡使用slf4j提供的介面進行日誌記錄,而具體的日誌記錄實現可以通過配置檔案來指定。

我做了一個例子,全部原始碼在我的github上。
我的例子使用log4j2作為日誌記錄的實現。

(1) 在Java專案的pom.xml裡定義slf4j和log4j2的版本號。

<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:

<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, 使用如下原始碼:

 <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:

如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

取名為jerry-log:


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

(4) 程式碼裡的使用:

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

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


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

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


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

在log明細裡能看到之前在SAP雲平臺Cockpit裡建立的Log service例項。


如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌
如何在ABAP Netweaver和CloudFoundry裡記錄並檢視日誌

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2155945/,如需轉載,請註明出處,否則將追究法律責任。

相關文章