我有如下的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/