Logging Worklight自定义记录器

Logging Worklight自定义记录器,logging,ibm-mobilefirst,Logging,Ibm Mobilefirst,出于审核目的,我希望登录到现有日志文件以外的其他日志文件,如info、debug、error、warn。我的新日志文件名是AUDIT.log,我想写一个语句WL.Logger.AUDIT(“…”),以重定向到新日志文件。请建议我怎么做。没有像WL.Logger.audit()这样的API,但是您可以创建自己的日志程序包,以实现您想要的差异化。请看这里: 请参阅此处以获取更完整的示例代码:您可以做的一件事是创建一个使用Java代码的Javascript适配器。设置起来很简单 首先创建一个Javas

出于审核目的,我希望登录到现有日志文件以外的其他日志文件,如info、debug、error、warn。我的新日志文件名是AUDIT.log,我想写一个语句WL.Logger.AUDIT(“…”),以重定向到新日志文件。请建议我怎么做。

没有像WL.Logger.audit()这样的API,但是您可以创建自己的日志程序包,以实现您想要的差异化。请看这里:


请参阅此处以获取更完整的示例代码:

您可以做的一件事是创建一个使用Java代码的Javascript适配器。设置起来很简单

首先创建一个Javascript适配器,将客户端日志上载到。您可以按照知识中心服务器准备文档中的说明进行操作。

然后在
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类内解析JSON

如果我想在我的文件中记录特定的消息,那么在客户端我将创建一个记录器包

var audit=WL.Logger.create({pkg:“audit”})

现在我有了一个记录器软件包,可以调用:

audit.debug(“调试”)

audit.info(“info”)

audit.error(“错误”)

在服务器端解析客户端日志时,我只会将包名为
audit
的日志转发到新的服务器日志文件

新日志文件将在服务器的根级别创建

希望这有帮助