我有如下的Java代码:

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

                    logger.info(myUri.toString());


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

最佳答案

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

然后覆盖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(作为启动器)的源代码。

关于java - 如何更改SLF4J登录到HTML链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35127537/

10-14 12:35