1

我有java代码:

final URI myUri = new URIBuilder()
                            .setScheme(azkabanHostProtocol)
                            .setHost(azkabanHost + ":" + azkabanPort)
                            .setPath("/executor")
                            .setParameter("execid", executionID).build();

                    logger.info(myUri.toString());

我想以 url/html 链接的形式将 myURI 显示到 Azkaban 的日志中,以便通过单击打开它的 url。我正在使用 log4j 进行日志记录。

4

2 回答 2

0

您如何查看 Azkaban 日志文件?如果它们只是使用普通文本编辑器查看的原始文本文件,那么就没有办法完成你想要的。如果您在更智能的 UI 中查看它们,那么您需要根据该 UI 的要求对其进行格式化。

简而言之,您的问题的答案完全取决于您用来查看日志的任何工具。

于 2016-02-01T17:24:47.287 回答
0

您可以创建自己的 Layout 类扩展HTMLLayout

然后覆盖该format方法以满足您的需求。

实际实现有以下几行,您可能想要替换:

sbuf.append(Transform.escapeTags(event.getRenderedMessage()));

看到消息字符串中的所有标签,默认都会被转义。

您的版本可能基于一种标记,String mark = "[LINK]";例如

if(event.getRenderedMessage().startsWith(mark)){
  String uri = event.getRenderedMessage().substring(mark.length());
  String link = "<a href=\"" + uri  + "\">" + uri  + "</a>";
  sbuf.append(link);
}
else
  sbuf.append(Transform.escapeTags(event.getRenderedMessage()));

你会这样调用记录器:

logger.info(mark + myUri.toString());

以下主题将帮助您使用自定义 HTMLLayout:如何在 log4j2 中更改 htmllayout

这是默认HTMLLayout的源代码,作为入门。

于 2016-02-01T10:30:30.983 回答