如何将slf4j日志更改为html链接

时间:2016-02-01 09:57:28

标签: java log4j azkaban

我有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的日志中,这样点击它就会打开它。我正在使用log4j进行日志记录。

2 个答案:

答案 0 :(得分:0)

您可以创建自己的扩展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:how to change htmllayout in log4j2

以下是默认HTMLLayout的源代码,作为初学者。

答案 1 :(得分:0)

如何查看Azkaban日志文件?如果它们只是使用vanilla文本编辑器查看的原始文本文件,那么就无法完成您想要的任何操作。如果您在更智能的UI中查看它们,则需要根据UI所需的格式对它们进行格式化。

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