0

默认情况下,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 后代?

4

2 回答 2

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 配置,请更改“布局”标签,使用您的课程

<layout class="CustomizationHTMLLayout">
于 2021-01-07T02:37:59.853 回答
0

从 javadocs 看来,不存在这样的选项,但请检查源以确定。在 1.0 之前,Logback 仍然是一个移动的目标。

如果您发现它不存在,则在 logback JIRA 实例中提出一个错误 - http://jira.qos.ch/secure/Dashboard.jspa - 并请求它,或者提交一个添加该功能的补丁。

于 2011-05-08T22:22:00.130 回答