如何在ABAP Netweaver和CloudFoundry里记录并查看日志
Netweaver
要記錄日志需要有一個(gè)checkpoint group,可以自行創(chuàng)建也可以使用標(biāo)準(zhǔn)的。這里我重用標(biāo)準(zhǔn)的group:DEMO_CHECKPOINT_GROUP。
tcode SAAB,點(diǎn)Display <->Activate進(jìn)入編輯模式,將Logpoints設(shè)置為"Log",日期設(shè)為Today,意為當(dāng)天生效。
 
 Netweaver的日志記錄大多是基于用戶級(jí)別的,這一點(diǎn)比較方便。給想打開日志記錄的用戶創(chuàng)建一個(gè)打開日志開關(guān)的配置:
 
 新建一個(gè)report名稱為ZCONTEXT, 下面代碼的含義是把當(dāng)前report名稱(包含在環(huán)境變量sy-cprog)和當(dāng)前report的運(yùn)行環(huán)境(online運(yùn)行還是offline運(yùn)行)寫入該checkpoint group。因?yàn)榭赡苡衅渌艘矔?huì)使用該group,所以用SUBKEY區(qū)分不同的用戶。
 執(zhí)行完report后返回SAAB即可查看到記錄的日志。
 
 雙擊能看到記錄的明細(xì)。
 
CloudFoundry
總的guideline在SAP官方Github上有。
這里簡述要點(diǎn)。
SAP云平臺(tái)的CloudFoundry環(huán)境里的日志記錄推薦使用slf4j(Simple Log Facade for Java)。即Java代碼里使用slf4j提供的接口進(jìn)行日志記錄,而具體的日志記錄實(shí)現(xiàn)可以通過配置文件來指定。
我做了一個(gè)例子,全部源代碼在我的github上。
 我的例子使用log4j2作為日志記錄的實(shí)現(xiàn)。
(1) 在Java項(xiàng)目的pom.xml里定義slf4j和log4j2的版本號(hào)。
<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區(qū)域維護(hù)相關(guān)的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云平臺(tái)Cockpit里創(chuàng)建一個(gè)新的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) 如何查詢記錄的日志:
 點(diǎn)擊Logs標(biāo)簽頁->Open Kibanna Dashboard, 能看到上圖"Diablo Connecting to backend system"對(duì)應(yīng)的日志:
 
 在log明細(xì)里能看到之前在SAP云平臺(tái)Cockpit里創(chuàng)建的Log service實(shí)例。
 
要獲取更多Jerry的原創(chuàng)技術(shù)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙"或者掃描下面二維碼:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的如何在ABAP Netweaver和CloudFoundry里记录并查看日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: iwatch1防水吗
- 下一篇: 横空降临,大疆官宣 4 月 13 日发布
