我的log4j.properties文件中有以下行:
log4j.appender.logfile.File = MyApplication.log
我的日志文件出现在MyDomain / config目录中,但我希望它登陆MyDomain / logs目录。我怎样才能做到这一点?我不允许修改startserv脚本。
提前感谢您的帮助!
答案 0 :(得分:8)
实际上,解析变量$ {catalina.home}的是log4j,Glassfish声明$ {catalina.home}为$ {com.sun.aas.instanceRoot}指向path / to / MyDomain /
您可以在GF环境中声明任何变量并将其放在log4j.properties上,log4j将在配置log4j时解析它们。
这对于设置基于服务器的日志记录配置参数非常有用,使用相同的log4.properties进行测试和部署
答案 1 :(得分:7)
您可以将appender设置为使用$ {com.sun.aas.instanceRoot},但与其他评论不同的是:
log4j.appender.logfile.File=${com.sun.aas.instanceRoot}/logs/MyApplication.log
这是../domains/domain{x}/logs目录中日志的正确位置。
答案 2 :(得分:1)
以下是可能的Tomcat,也许Glassfish设置一个类似的环境变量指向它的文件系统位置:
log4j.appender.logfile.File=${catalina.home}/logs/MyApplication.log
${catalina.home}
是由Tomcat设置的环境/系统属性,指向它的安装目录。 Log4j能够扩展这些,至少在PropertyConfigurer
。
答案 3 :(得分:0)
您需要指定绝对路径,而不是相对路径(假设是Unix路径):
log4j.appender.logfile.File=/path/to/MyDomain/logs/MyApplication.log
答案 4 :(得分:0)
因为在GlassFish中,文件登陆配置和日志是它的兄弟,而不是
log4j.appender.logfile.File=MyApplication.log
使用
log4j.appender.logfile.File=../logs/MyApplication.log
在GlassFish 3.1.1上测试,它可以工作。