为什么logback配置正确却始终无法生成日志文件?

2026-04-03 01:371阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计632个文字,预计阅读时间需要3分钟。

为什么logback配置正确却始终无法生成日志文件?

前言:Spring通常需要打印日志,否则无法定位问题,也会增加调试难度。而目前与Spring搭配的日志库是Logback,其使用方法非常简单,只需在相应位置添加一个XML配置文件即可。前言:Spring通常需要记录日志,否则难以定位问题,还会增加调试难度。Logback作为其日志库,配置方式简单,只需在该位置添加一个XML配置文件。

前言spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback使用方法很简单,直接在该位置加入一个xml的配置文

前言

spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback

使用方法很简单,直接在该位置加入一个xml的配置文件即可(配置文件示例在文章末),而且可以很简单的生成日志文件

正文

但是我发现直接在idea里运行时,就会好好的生成日志文件,但在生成jar包后使用 java -jar xx.jar命令时却无法生成日志,很奇怪,而且搜索引擎搜出来的也跟我的貌似不太一样

后来一次运行jar的时候手残双击了一下jar包,然后jar包被我设置的jre运行了(没有控制台的运行),我忽然发现日志文件生成了!!!

我就很奇怪,难道是默认的jre程序可以生成log?然后我打开了jre的目录,直接在当前位置打开命令行,然后在执行java -jar,控制台输出了一句没有权限在jre目录创建log的日志

然后我忽然想到,会不会是命令行在哪个目录运行就会在哪个目录生成日志文件

我打开了命令行,默认目录指向了用户目录,然后我果然在用户目录找到了日志文件

问题终于找到了!

为什么logback配置正确却始终无法生成日志文件?

然后我打开命令行,先把目录定位到jar包的目录,然后执行java -jar命令,果然,日志文件出来了...

总结

使用命令行运行jar包,日志文件会在执行命令的目录下生成!

logback-spring.xml配置文件的内容如下

logback

info

${CONSOLE_LOG_PATTERN}UTF-8${log.path}/debug.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8 ${log.path}/debug/debug-%d{yyyy-MM-dd}.%i.log100MB15debugACCEPTDENY${log.path}/info.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8${log.path}/info/info-%d{yyyy-MM-dd}.%i.log2048MB90infoACCEPTDENY${log.path}/warn.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8 ${log.path}/warn/warn-%d{yyyy-MM-dd}.%i.log1024MB365warnACCEPTDENY${log.path}/error.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8 ${log.path}/error/error-%d{yyyy-MM-dd}.%i.log1024MB365ERRORACCEPTDENY

本文共计632个文字,预计阅读时间需要3分钟。

为什么logback配置正确却始终无法生成日志文件?

前言:Spring通常需要打印日志,否则无法定位问题,也会增加调试难度。而目前与Spring搭配的日志库是Logback,其使用方法非常简单,只需在相应位置添加一个XML配置文件即可。前言:Spring通常需要记录日志,否则难以定位问题,还会增加调试难度。Logback作为其日志库,配置方式简单,只需在该位置添加一个XML配置文件。

前言spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback使用方法很简单,直接在该位置加入一个xml的配置文

前言

spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback

使用方法很简单,直接在该位置加入一个xml的配置文件即可(配置文件示例在文章末),而且可以很简单的生成日志文件

正文

但是我发现直接在idea里运行时,就会好好的生成日志文件,但在生成jar包后使用 java -jar xx.jar命令时却无法生成日志,很奇怪,而且搜索引擎搜出来的也跟我的貌似不太一样

后来一次运行jar的时候手残双击了一下jar包,然后jar包被我设置的jre运行了(没有控制台的运行),我忽然发现日志文件生成了!!!

我就很奇怪,难道是默认的jre程序可以生成log?然后我打开了jre的目录,直接在当前位置打开命令行,然后在执行java -jar,控制台输出了一句没有权限在jre目录创建log的日志

然后我忽然想到,会不会是命令行在哪个目录运行就会在哪个目录生成日志文件

我打开了命令行,默认目录指向了用户目录,然后我果然在用户目录找到了日志文件

问题终于找到了!

为什么logback配置正确却始终无法生成日志文件?

然后我打开命令行,先把目录定位到jar包的目录,然后执行java -jar命令,果然,日志文件出来了...

总结

使用命令行运行jar包,日志文件会在执行命令的目录下生成!

logback-spring.xml配置文件的内容如下

logback

info

${CONSOLE_LOG_PATTERN}UTF-8${log.path}/debug.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8 ${log.path}/debug/debug-%d{yyyy-MM-dd}.%i.log100MB15debugACCEPTDENY${log.path}/info.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8${log.path}/info/info-%d{yyyy-MM-dd}.%i.log2048MB90infoACCEPTDENY${log.path}/warn.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8 ${log.path}/warn/warn-%d{yyyy-MM-dd}.%i.log1024MB365warnACCEPTDENY${log.path}/error.log

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nUTF-8 ${log.path}/error/error-%d{yyyy-MM-dd}.%i.log1024MB365ERRORACCEPTDENY