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区分不同的用户。LOG-POINT ID demo_checkpoint_groupSUBKEY sy-unameFIELDS sy-batch sy-cprog.
执行完report后返回SAAB即可查看到记录的日志。双击能看到记录的明细。
CloudFoundry
总的guideline在上有。
这里简述要点。
SAP云平台的CloudFoundry环境里的日志记录推荐使用slf4j(Simple Log Facade for Java)。即Java代码里使用slf4j提供的接口进行日志记录,而具体的日志记录实现可以通过配置文件来指定。
我做了一个例子,全部源代码在我的上。
我的例子使用log4j2作为日志记录的实现。(1) 在Java项目的pom.xml里定义slf4j和log4j2的版本号。
1.8 1.8 2.1.5 2.8.2 1.7.24
在pom.xml文件的dependency区域维护相关的dependency:
org.slf4j slf4j-api ${slf4j.version} com.sap.hcp.cf.logging cf-java-logging-support-log4j2 ${cf-logging-version} org.apache.logging.log4j log4j-slf4j-impl ${log4j2.version} org.apache.logging.log4j log4j-core ${log4j2.version} com.sap.hcp.cf.logging cf-java-logging-support-servlet ${cf-logging-version}
(2) 在CLASSPATH下新建log4j2.xml, 使用如下源代码:
(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的原创技术文章,请关注公众号"汪子熙"