java - log4j2 无法在日志文件中写入异常跟踪
问题描述
我正在尝试在日志文件中打印异常的堆栈跟踪,但无济于事。配置文件是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{dd-MM-YYYY HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.zip">
<PatternLayout>
<alwaysWriteExceptions>false</alwaysWriteExceptions>
<pattern>%d{dd-MM-YYYY HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg %n %ex</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="WARN">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
%ex 被忽略
这是产生错误的代码。
public void getSingle(){
try{
//cut
}catch (Exception e){
//program enter in this exception
e.printStackTrace();
UtilsService.openAlertDialog(resources.getString("title.error"),null,UtilsService.getExceptionMessage(e),Alert.AlertType.ERROR);
logger.error("Class exception: " + e);
}
}
解决方案
logger.error("Class exception: " + e);
您正在构建一个被打印的字符串。toString
Exception 继承自它Throwable
打印 Exception 类名称和消息的位置。这被添加到字符串“Class exception:”中以形成一个正在打印的字符串。
您想将异常logger.error
作为参数传递给
logger.error("Class exception: " + e, e);
推荐阅读
- markdown - Sphinx Recommonmark CommonMarkParser 未检测到 URL 链接
- python - Django - 无法在页面上显示值
- python - 将geojson文件加载到django数据库中
- r - knitr 更改摘要输出颜色
- docker-compose - Spring cloud gateway 在使用 docker-compose 运行时给出 500 错误 finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8083
- reactjs - 无法在 Outlook Web 加载项项目中安装流畅的 UI 反应
- hunspell - Hunspell 中额外标志的怪癖
- css - 浏览器如何将 Web 元素的颜色的 RGB 格式转换为 RGBA 格式?
- python - 使用漂亮的汤在python中进行网络抓取:AttributeError:'NoneType'对象没有属性'text'
- javascript - 使用 Vuex 和 vue google chart 操作数据