Worklight 自定义记录器
Posted
技术标签:
【中文标题】Worklight 自定义记录器【英文标题】:Worklight custom loggers 【发布时间】:2016-04-08 03:23:23 【问题描述】:出于审核目的,我想登录到不同于现有日志文件(例如 info、debug、error、warn)的其他日志文件。我的新日志文件名为 AUDIT.log,我想写一条语句为 WL.Logger.audit('...') 以重定向到新日志文件。请建议我该怎么做。
【问题讨论】:
【参考方案1】:您可以做的一件事是创建一个将使用 Java 代码的 javascript 适配器。设置非常简单。
首先创建一个 Javascript 适配器来上传您的客户端日志。您可以按照知识中心的服务器准备文档中的说明进行操作。 https://www.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.dev.doc/devref/c_uploaded_client_log_data.html?lang=en
然后在server/lib
文件夹下创建一个Java 类。我在包com.sample.customcode
下创建了类LogDownloader.java
。
LogDownloader.java
里面
package com.sample.customcode;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
public class LogDownloader
public static void download(String deviceInfo, String logMessages) throws IOException
//Create a new file
File file = new File("audit.log");
//Create the file writer
FileWriter writer = new FileWriter(file);
//Write to the file
writer.write(deviceInfo + "\n");
writer.write(logMessages + "\n");
//Close the stream
writer.flush();
writer.close();
在我的WLClientLogReceiver
适配器中,我可以使用我的Java 调用并使用我想要的参数调用它。如下:
function log(deviceInfo, logMessages)
com.sample.customcode.LogDownloader.download(JSON.stringify(deviceInfo), JSON.stringify(logMessages));
return
result: true
;
在服务器端,您可以在写入日志文件时解析您想要的方式。您可以选择在 Javascript 适配器中解析 JSON 或在 Java 类中解析。
如果我想在我的文件中记录特定消息,那么我会在客户端创建一个记录器包
var audit = WL.Logger.create(pkg: "AUDIT");
现在我有了一个可以调用的记录器包:
audit.debug("DEBUG");
audit.info("INFO");
audit.error("ERROR");
在服务器端解析客户端日志时,我只会将包名称为audit
的日志转发到新的服务器日志文件。
新的日志文件将在您服务器的根级别创建。
希望这会有所帮助。
【讨论】:
【参考方案2】:没有像 WL.Logger.audit() 这样的 API,但是您可以创建自己的记录器包来实现您正在寻找的差异化。见这里:http://www.ibm.com/support/knowledgecenter/SSHSCD_7.1.0/com.ibm.worklight.dev.doc/apiref/c_configuring_logger.html?lang=en
查看此处获取更完整的示例代码:http://www.ibm.com/support/knowledgecenter/SSHSCD_7.1.0/com.ibm.worklight.dev.doc/apiref/r_logger_js_module_example.html?lang=en
【讨论】:
以上是关于Worklight 自定义记录器的主要内容,如果未能解决你的问题,请参考以下文章
Worklight 6.1 和外部 dojolib,使用 AMD 加载自定义模块