为何logback系统无法成功创建日志文件?

更新于
2026-09-24 03:11:25
3阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

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

为何logback系统无法成功创建日志文件?

Spring一般需要打印日志,否则无法定位问题,也会增加调试难度。而目前和Spring搭配的日志库是logback,使用方法非常简单,直接在该位置添加一个xml的配置文件即可。

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

前言

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

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

为何logback系统无法成功创建日志文件?

正文

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

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

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

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

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

问题终于找到了!

然后我打开命令行,先把目录定位到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

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

为何logback系统无法成功创建日志文件?

Spring一般需要打印日志,否则无法定位问题,也会增加调试难度。而目前和Spring搭配的日志库是logback,使用方法非常简单,直接在该位置添加一个xml的配置文件即可。

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

前言

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

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

为何logback系统无法成功创建日志文件?

正文

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

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

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

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

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

问题终于找到了!

然后我打开命令行,先把目录定位到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