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 自定义记录器的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight - 自定义认证

如何在 Worklight 上自定义直接更新消息?

Worklight 6.1 和外部 dojolib,使用 AMD 加载自定义模块

IBM Worklight - 实现自定义后退/前进按钮

Worklight:Push NOTIFICATION_USER表的自定义用户ID

IBM Worklight 5.0.6 - 在推送通知错误时播放自定义声音