如何在ABAP Netweaver和CloudFoundry里记录并查看日志
Netweaver
要記錄日志需要有一個checkpoint group,可以自行創建也可以使用標準的。這里我重用標準的group:DEMO_CHECKPOINT_GROUP。
tcode SAAB,點Display <->Activate進入編輯模式,將Logpoints設置為"Log",日期設為Today,意為當天生效。
Netweaver的日志記錄大多是基于用戶級別的,這一點比較方便。給想打開日志記錄的用戶創建一個打開日志開關的配置:
新建一個report名稱為ZCONTEXT, 下面代碼的含義是把當前report名稱(包含在環境變量sy-cprog)和當前report的運行環境(online運行還是offline運行)寫入該checkpoint group。因為可能有其他人也會使用該group,所以用SUBKEY區分不同的用戶。
執行完report后返回SAAB即可查看到記錄的日志。
雙擊能看到記錄的明細。
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:
取名為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的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的如何在ABAP Netweaver和CloudFoundry里记录并查看日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iwatch1防水吗
- 下一篇: 写在Github被微软收购之际 - Gi