Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring-异常不会记录到文件中_Spring_Logging_Logback_Slf4j - Fatal编程技术网

Spring-异常不会记录到文件中

Spring-异常不会记录到文件中,spring,logging,logback,slf4j,Spring,Logging,Logback,Slf4j,我目前正在使用SLF4J API进行日志记录 每当在运行时引发异常时,完整的错误堆栈跟踪不会记录到文件,它只会打印到控制台。我正在使用eclipse 这是我的logback.xml代码(当前位于WEB-INF下的classes文件夹中) %d{yyyy-MM-dd hh:MM:ss a}[%thread]-5级别%logger{50}-%rEx%msg%n ${LOGFILE_PATH}/spring-mybatis-log.log %d{yyyy-MM-dd hh:MM:ss a}[%thr

我目前正在使用SLF4J API进行日志记录

每当在运行时引发异常时,完整的错误堆栈跟踪不会记录到文件,它只会打印到控制台。我正在使用eclipse

这是我的logback.xml代码(当前位于WEB-INF下的classes文件夹中)


%d{yyyy-MM-dd hh:MM:ss a}[%thread]-5级别%logger{50}-%rEx%msg%n
${LOGFILE_PATH}/spring-mybatis-log.log
%d{yyyy-MM-dd hh:MM:ss a}[%thread]-5级别%logger-%rEx%msg%n
${LOGFILE_PATH}/spring mybatis log-%d{yyyy-MM-dd}-%i.txt
2MB
  • 上述文件是否有遗漏/错误

  • 是否可以将要打印到控制台的所有文本记录到(文件)中

  • spring(或项目本身)如何读取logback.xml文件?如果我重命名它并将其放在另一个文件夹中会怎么样

  • 如何创建一个包含所有级别(信息、调试、错误、警告等)的根目录


  • 您的配置看起来还可以,但您可以尝试使用根级别信息来代替调试,如果您有spring、hibernate等框架,则可以使用其他级别的Logback,例如:

    <logger name="org.hibernate" level="OFF" />
    <logger name="org.springframework" level="INFO" />
    <logger name="org.springframework.web.servlet.mvc" level="INFO" />
    

    回答您的问题:

  • 在您发布的文件中,我看没有什么明显的问题,尽管我没有尝试实际运行它
  • 正如您所做的那样,有两个appender,一个用于文件,另一个用于控制台
  • 默认情况下,Logback在类路径中查找Logback.xml文件。有关详细信息,请参阅。它到达那里的方式取决于您的构建系统。当使用Maven时,我建议将其放在
    src/main/resources
    中。但是,如果在部署到WEB应用程序时,它最终出现在
    WEB-INF/classes
    中,那么这应该是可行的。如果不管您在logback.xml文件中放入什么,您只会得到控制台输出(尝试添加语法错误或重命名文件以进行测试),这就是我首先要看的,以确保logback正确地获取文件。如果找不到文件,它将默认在控制台上显示所有内容,尽管我认为它在开始时会显示一个警告,表明它正在这样做。如果它正在拾取文件,您可以尝试输入
    元素,以查看它拾取的错误是否导致它无法按预期方式使用appender
  • 正如您所做的那样,指定日志记录的“调试”级别也将获得所有更高级别
  • 如果问题是Spring的日志记录没有达到您想要的目的,而您的应用程序的日志记录工作正常,那么您可能需要将Spring(使用Apache Commons日志记录)重定向到使用SLF4J。为此,请删除commons日志依赖项并添加jcl-over-slf4j库。这将模拟commons日志调用,并让它们指向SLF4J。有关详细信息,请参阅的“使用SLF4J”部分

    <logger name="org.hibernate" level="OFF" />
    <logger name="org.springframework" level="INFO" />
    <logger name="org.springframework.web.servlet.mvc" level="INFO" />