Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1317962
  • 博文数量: 932
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 10208
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-08 12:28
文章分类

全部博文(932)

文章存档

2021年(1)

2020年(134)

2019年(792)

2018年(5)

我的朋友

分类: 架构设计与优化

2019-04-19 12:18:53

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_group
SUBKEY sy-uname
FIELDS sy-batch sy-cprog. 

执行完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.8maven.compiler.source> <maven.compiler.target>1.8maven.compiler.target> <cf-logging-version>2.1.5cf-logging-version> <log4j2.version>2.8.2log4j2.version> <slf4j.version>1.7.24slf4j.version> properties> 

在pom.xml文件的dependency区域维护相关的dependency:

<dependency> <groupId>org.slf4jgroupId> <artifactId>slf4j-apiartifactId> <version>${slf4j.version}version> dependency> <dependency> <groupId>com.sap.hcp.cf.logginggroupId> <artifactId>cf-java-logging-support-log4j2artifactId> <version>${cf-logging-version}version> dependency> <dependency> <groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-slf4j-implartifactId> <version>${log4j2.version}version> dependency> <dependency> <groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-coreartifactId> <version>${log4j2.version}version> dependency> <dependency> <groupId>com.sap.hcp.cf.logginggroupId> <artifactId>cf-java-logging-support-servletartifactId> <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>  <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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

阅读(308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~