spring log4j 生成日志路径不对的问题

时间:2022-12-22 17:20:02
用log4j记录日志,发现了很奇怪的问题。

1、用eclipse3.7开发spring web项目testWeb,
log4j.properties:
log4j.rootLogger=DEBUG,R,stdout
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${logFilePath}/test.log

web.xml:
<context-param>
<param-name>logFilePath</param-name>
<param-value>www/log</param-value>
</context-param>

我的eclipse安装在d盘
启动服务后,发现日志在D:\test.log
而在eclipse发布的目录下的testWeb\www\log\下没有日志文件。

请问这是什么原因造成的?

37 个解决方案

#1


日志都是绝对路径吧

#2


不应该是绝对路径吧。

#3


没有人给解答一下吗

#4


你这样试试--

web.xml:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>test</param-value>
</context-param>

log4j.properties:
log4j.appender.R.File=${test}/logs/test.log

#5


还是一样。log文件仍然生成到了D盘根目录

#6


你看一下testWeb下面有logs文件夹么

#7


我就直接写的log4j.appender.R.File=${test}/test.log
但是日志仍然是在D盘根目录

#8


${test}/
最终是什么呢??
应该就变成d盘了吧

#9


context-param>
<param-name>webAppRootKey</param-name>
<param-value>test</param-value>
</context-param>
${test}不应该是我工程发布的路径下吗?

#10


我觉得这个问题,可能跟eclipse3.7有关。

#11


有个log4j.properties文件里面可以配置你日志的生成目录

#12


我已经配置了路径了。
而且我把工程拷贝到了tomcat下执行,启动tomcat,
发现日志仍然生成在了D盘。
真是郁闷了。
我用maven构建的工程,完全没有问题,正常执行。
同样的代码,只不过现在不是maven的模式,就不能正常执行了,真奇怪。

#13


log.getFile();
打印出来看看。

#14


哦,不太明白

#15


把这个${logFilePath}值打印看下

#16



         DailyRollingFileAppender appender = (DailyRollingFileAppender)Logger.getRoot().getAppender("R");
         System.err.print("log path = " + appender .getFile());


打印出来看看是否是${logFilePath}值有问题。

#17


log4j。properties:
log4j.appender.R.File=${webapp.root}/WEB-INF/logs/test.log

web。xml里面没有任何配置,用的是spring,是可以自动加载上properties的

打印出来的是:
log path = /WEB-INF/logs/test.log

#18


log4j.appender.R.File=c:/test.log

他还能生成到D盘?

#19


写死了就生成到c盘了。
可是我想把日志放到工程下面。

#20


我知道,现在是分析原因呢。
都得到日志文件的路径了尽然写到D盘了,真是头一次见。
要不你别在配置文件设路径了,直接在代码里里设
DailyRollingFileAppender应该有设置文件的方法。

#21


嗯。是的,也是第一次遇到这种问题。
问了几个同事,都觉得不可能出现这种事情。
汗。

#22


我碰到过类似的问题。
是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
你的tomcat安装在D盘?

#23


引用 22 楼 yk789 的回复:
我碰到过类似的问题。
是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
你的tomcat安装在D盘?


我到觉得是apache-tomcat\bin下呢,那你怎么解决的。

#24


引用 23 楼 softroad 的回复:
引用 22 楼 yk789 的回复:

我碰到过类似的问题。
是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
你的tomcat安装在D盘?


我到觉得是apache-tomcat\bin下呢,那你怎么解决的。


我们不需要解决,我们要就是放到根目录下。

#25


我靠,这算啥么,逃避问题?

#26


我的tomcat的确放在d盘。
可是我已经在properties里面定义了
log4j.appender.R.File=${webapp.root}/WEB-INF/logs/test.log
难道这个webapp.root是表示了tomcat的根路径啊。
可是,我同事其他的工程也是用的这样的方法,
那我在web.xml:
<context-param>
<param-name>logFilePath</param-name>
<param-value>www/log</param-value>
</context-param>
定义了logFilePath
然后log4j.appender.R.File=${logFilePath}/test.log
log就到了工程路径下。
这是什么原因,是我的log文件写的不对?

#27


木有人回答一下吗

#28


/WEB-INF/logs有这个文件夹吗?

#29


有的。在工程下面都设置了的。

#30


${webapp.root} 是需要你自己定义的。

#31


问题解决了。呵呵。
谢谢各位。

#32


原因何在?难道没有读写权限?

#33


不是。
是配置文件的问题。
都在web.xml里面。
1、可以不配置properties,这样就只能是在tomcat的根路径下。
2、配置properties,加上listener。

#34


 把你web.xml贴出来

#35


<context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/classes/log4j.properties</param-value> </context-param> -<context-param> <param-name>webAppRootKey</param-name> <param-value>myappfuse.root</param-value> </context-param> -<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>

#36


弱弱 回答下 你eclipse 关掉 再开下吧

#37


呃哦..

#1


日志都是绝对路径吧

#2


不应该是绝对路径吧。

#3


没有人给解答一下吗

#4


你这样试试--

web.xml:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>test</param-value>
</context-param>

log4j.properties:
log4j.appender.R.File=${test}/logs/test.log

#5


还是一样。log文件仍然生成到了D盘根目录

#6


你看一下testWeb下面有logs文件夹么

#7


我就直接写的log4j.appender.R.File=${test}/test.log
但是日志仍然是在D盘根目录

#8


${test}/
最终是什么呢??
应该就变成d盘了吧

#9


context-param>
<param-name>webAppRootKey</param-name>
<param-value>test</param-value>
</context-param>
${test}不应该是我工程发布的路径下吗?

#10


我觉得这个问题,可能跟eclipse3.7有关。

#11


有个log4j.properties文件里面可以配置你日志的生成目录

#12


我已经配置了路径了。
而且我把工程拷贝到了tomcat下执行,启动tomcat,
发现日志仍然生成在了D盘。
真是郁闷了。
我用maven构建的工程,完全没有问题,正常执行。
同样的代码,只不过现在不是maven的模式,就不能正常执行了,真奇怪。

#13


log.getFile();
打印出来看看。

#14


哦,不太明白

#15


把这个${logFilePath}值打印看下

#16



         DailyRollingFileAppender appender = (DailyRollingFileAppender)Logger.getRoot().getAppender("R");
         System.err.print("log path = " + appender .getFile());


打印出来看看是否是${logFilePath}值有问题。

#17


log4j。properties:
log4j.appender.R.File=${webapp.root}/WEB-INF/logs/test.log

web。xml里面没有任何配置,用的是spring,是可以自动加载上properties的

打印出来的是:
log path = /WEB-INF/logs/test.log

#18


log4j.appender.R.File=c:/test.log

他还能生成到D盘?

#19


写死了就生成到c盘了。
可是我想把日志放到工程下面。

#20


我知道,现在是分析原因呢。
都得到日志文件的路径了尽然写到D盘了,真是头一次见。
要不你别在配置文件设路径了,直接在代码里里设
DailyRollingFileAppender应该有设置文件的方法。

#21


嗯。是的,也是第一次遇到这种问题。
问了几个同事,都觉得不可能出现这种事情。
汗。

#22


我碰到过类似的问题。
是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
你的tomcat安装在D盘?

#23


引用 22 楼 yk789 的回复:
我碰到过类似的问题。
是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
你的tomcat安装在D盘?


我到觉得是apache-tomcat\bin下呢,那你怎么解决的。

#24


引用 23 楼 softroad 的回复:
引用 22 楼 yk789 的回复:

我碰到过类似的问题。
是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
你的tomcat安装在D盘?


我到觉得是apache-tomcat\bin下呢,那你怎么解决的。


我们不需要解决,我们要就是放到根目录下。

#25


我靠,这算啥么,逃避问题?

#26


我的tomcat的确放在d盘。
可是我已经在properties里面定义了
log4j.appender.R.File=${webapp.root}/WEB-INF/logs/test.log
难道这个webapp.root是表示了tomcat的根路径啊。
可是,我同事其他的工程也是用的这样的方法,
那我在web.xml:
<context-param>
<param-name>logFilePath</param-name>
<param-value>www/log</param-value>
</context-param>
定义了logFilePath
然后log4j.appender.R.File=${logFilePath}/test.log
log就到了工程路径下。
这是什么原因,是我的log文件写的不对?

#27


木有人回答一下吗

#28


/WEB-INF/logs有这个文件夹吗?

#29


有的。在工程下面都设置了的。

#30


${webapp.root} 是需要你自己定义的。

#31


问题解决了。呵呵。
谢谢各位。

#32


原因何在?难道没有读写权限?

#33


不是。
是配置文件的问题。
都在web.xml里面。
1、可以不配置properties,这样就只能是在tomcat的根路径下。
2、配置properties,加上listener。

#34


 把你web.xml贴出来

#35


<context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/classes/log4j.properties</param-value> </context-param> -<context-param> <param-name>webAppRootKey</param-name> <param-value>myappfuse.root</param-value> </context-param> -<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>

#36


弱弱 回答下 你eclipse 关掉 再开下吧

#37


呃哦..