默认情况下,logback仅为HTML日志文件生成以下标头:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Logback Log Messages</title>
<style type="text/css">
</style>
</head>
但是这里的编码没有设置。有些浏览器默认编码为他们想要的东西,如'windows-1251'或'ISO-8859-1'或'ISO-8859-5'。
如何添加类似
的内容<meta http-equiv="Content-Type" content="text/html; charset=utf-16">
到HTML标题?此外,由于Java中的所有字符串都是UTF-16,这不应该在logback源代码中永久设置吗?
有没有办法通过logback配置文件来实现,还是应该创建自己的HTMLLayout后代?
答案 0 :(得分:1)
你不能设置“head”标签,但你可以扩展“HTMLLayout”,例如:
public class CustomizationHTMLLayout extends HTMLLayoutBase<ILoggingEvent>{
@Override
public String getFileHeader()
{
StringBuilder sbuf = new StringBuilder();
sbuf.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"");
sbuf.append(" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
sbuf.append(LINE_SEPARATOR);
sbuf.append("<html>");
sbuf.append(LINE_SEPARATOR);
sbuf.append(" <head>");
sbuf.append(LINE_SEPARATOR);
// customization code
sbuf.append(" <meta charset=\"utf-8\">");
sbuf.append(LINE_SEPARATOR);
// customization code
sbuf.append(" <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">");
sbuf.append(LINE_SEPARATOR);
sbuf.append(" <title>");
sbuf.append(title);
sbuf.append("</title>");
sbuf.append(LINE_SEPARATOR);
cssBuilder.addCss(sbuf);
sbuf.append(LINE_SEPARATOR);
sbuf.append(" </head>");
sbuf.append(LINE_SEPARATOR);
sbuf.append("<body>");
sbuf.append(LINE_SEPARATOR);
return sbuf.toString();
}
}
如果你使用 xml configraution ,改变“layout”标签,使用你的类
<layout class="CustomizationHTMLLayout">
答案 1 :(得分:0)
从javadocs看来,不存在这样的选项,但检查源是否确定。在1.0之前,Logback仍然是一个移动目标。
如果您发现它不存在,那么在logback JIRA实例中引发一个错误 - http://jira.qos.ch/secure/Dashboard.jspa - 并要求它,或者提交一个添加功能的补丁。