前言
spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback
使用方法很简单,直接在该位置加入一个xml的配置文件即可(配置文件示例在文章末),而且可以很简单的生成日志文件
正文
但是我发现直接在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