繁体   English   中英

log4j2无法在日志文件中写入异常跟踪

[英]log4j2 can't write exception trace in log file

我正在尝试在日志文件中打印异常的堆栈跟踪,但无济于事。 配置文件是这样的:

<?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);

您仅在构造一个要打印的字符串。 Exception的toString继承自Throwable ,在其中打印Exception类的名称和消息。 这被添加到字符串“ Class exception:”中以形成一个要打印的字符串。

您想将异常作为参数传递给logger.error

logger.error("Class exception: " + e, e);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM