以下是我的springboot应用程序中的logback.xml配置。
<property name="LOG_DIR" value="${LOG_DIR}" />
<property name="LOG_FILE" value="${LOG_FILE}" />
<appender name="ROLLING_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_DIR}/${LOG_FILE}_old.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>100</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} - %msg%n
</Pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="ROLLING_LOG" />
</root>
使用以下命令启动应用程序
java -DLOG_DIR=/logs -DLOG_FILE=my.log -jar target/my.jar
我在所有班级都使用@ Sl4j。 所有日志都打印在日志文件中,除了 exception的stacktrace(e.printStackTrace)。之外,它会在控制台中打印出来。
不是重复的帖子,几乎所有的帖子都找不到合适的答案
感谢任何帮助
由于
答案 0 :(得分:3)
如Javadoc中所述:
将此throwable及其回溯打印到标准错误流。
因此,除非您通过SLF4J记录异常,否则堆栈跟踪将不会打印在您的文件中。
如果您不控制对printStackTrace
的调用,则可以重定向java命令的输出以附加到文件。
java -DLOG_DIR=/logs -DLOG_FILE=my.log -jar target/my.jar >> console.log 2>&1
以上内容会将所有文本附加到文件 console.log ,并将标准错误流重定向到标准输出流。