在 上篇 https://blog.csdn.net/kangguang/article/details/104584279 中
错误级别等日志文件输出格式为:html
log4j.appender.E.layout = org.apache.log4j.HTMLLayout
log4j.appender.E.layout.Title =错误日志
在生成的文件目录中,直接打开 里面的中文字符显示没有问题的,但是把html文件放入到Tomcat 中进行访问到时候中文字符 就显示成乱码了:
问题分析:
1.考虑是Tomcat 没有UTF-8 ,在tomcat 安装目录 conf 文件下server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
但是依然没有解决问题
2.更改bin文件夹下 catalina.sh 关于 UTF-8的设置,依然没有解决
3.细看了一下Tomcat 文档和 配置文件 发现 Tomcat8 默认就已经支持了 UTF-8 ,最后怀疑是log4j生成html 文件有问题
用工具打开error.html zai <head>中加入
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>错误日志</title>
放入到Tomcat 中 再次访问,乱码问题解决了,但是项目运行中并没有自动加入 上面到更改,以后还会出现这样到问题,而且
日志信息显示的并不友好,考虑是不是可以自定义一下html页面的显示内容呢,idea中打开 HTMLLayout文件
有这个方法
public String getContentType() {
return "text/html";
}
但是并没有定义contentType属性和set方法
进入到getHeader方法中 发现 没有 关于 content="text/html; 的相关设置
综合考虑编写一个HTMLLayout的子类重写 HTMLLayout