要記錄日誌須要有一個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
總的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的原創技術文章,請關注公衆號"汪子熙"