2011-10-02 96 views
4

我最近接管一个使用在AIX下运行的websphere和log4j的Web应用程序项目。为了创建一个开发环境,我在windows中设置所有组件,使用eclipse编译WAR文件并部署它。Websphere中的Log4j

除日志文件未创建外,所有工作都正常。 我改变了从以类似log4j.properties日志文件在下面,并和大家给予完全访问权限的目录:

log4j.appender.F1.File=/abc/def/logs/admin.log 

log4j.appender.F1.File=c:/logs/admin.log 

我还能检查?

我创建了一个简单的独立testapp,它使用相同的log4j.properties,它可以创建日志文件,但是当部署到websphere的servlet不起作用时。请帮忙!谢谢!

+0

您是否已经在WAR文件的WEB-INF/classes中放置了log4j.properties?您是否在文件系统的另一个位置查找admin.log? stdout或stderr日志(我不知道这些在CE中)显示任何与log4j相关的错误?你在做什么应该工作,所以我猜测log4j.properties文件没有被使用。 – dbreaux

+0

是的,log4j。属性位于WAR文件的WEB-INF/classes内部。我猜log4j.properties是好的,因为我改变了输出模式,并且它可以用于控制台输出。 – John

+0

log4j.properties在里面,但不知何故它不被log4j读取。我强制该代码并正在工作,但如何使tomcat使用WEB-INF/classess中的一个而不使用硬编码?代码:PropertyConfigurator.configure(“C:\\ test \\ log4j.properties”); – John

回答

4

好的,我认为this article应该可以帮到你。看来WebSphere CE默认使用log4j,并使用全局属性文件进行控制。有一节介绍如何使用特定于应用程序的属性文件。

+0

感谢dbreaux,辉煌!正是这个问题!真的很难让新手知道所有这些,现在转向学习如何制定部署计划,感叹! – John

0

我建议你使用环境变量在服务器上设置这样的:

必须访问您的服务器的管理控制台。 在自定义属性

的server_path =/ABC/DEF /日志

在你的log4j,使用:{$}的server_path /log.txt

确保运行应用程序的用户有更好的机会获得目录。

+0

感谢您的回复。我对websphere完全陌生,设置env的正确方法是什么,我通过整个管理控制台阅读,但没有发现任何内容?我尝试的最佳猜测是在C:\ Program Files \ IBM \ WebSphere \ AppServerCommunityEdition \ bin中设置env var,并按照建议更改log4j,但它也不起作用。 – John

+0

变量的设置在服务器 - 进程定义 - 自定义属性下完成 –

+0

我没有在服务器下获得“进程定义”,只有信息,\t \t Java系统信息,服务器日志,关闭,Web服务器,线程池等。我在Windows中使用Community Edition,控制台位于http:// localhost:8080/ – John

1

以下是我尝试解决类似问题的方法。

  1. 打开log4j调试以查看它实际从何处拾取文件。您需要获取哪个文件的证据(因此打开调试是一项有价值的活动)这为您提供了有关log4j试图执行什么操作来查找配置文件的信息。

    -Dlog4j.debug =真

  2. 我不会硬编码在代码log4j的位置。相反,我 将使用log4j.configuration系统属性并在 中声明JVM参数。这样即使我不需要碰我的代码。

    -Dlog4j.configuration =文件:///home/manglu/log4j.properties

我会不管用,我使用的运行服务器的这种做法(无论是Tomcat或WAS CE或WAS )

希望这会有所帮助

+0

感谢Manglu,在那里指定那个开关?对不起我的新手问题! – John

+0

在jvm参数中。-D会将该文件的引用提供给log4j。参见设置jvm args in谷歌为您正在使用的服务 –

+0

我在我的应用程序中使用anove方法 我可以提供自定义属性,而不是JVM参数中的文件位置正在使用websphere 6.1 –