Log4j 如何使WebLogic在server/logs目录下创建子文件夹?

Log4j 如何使WebLogic在server/logs目录下创建子文件夹?,log4j,weblogic,Log4j,Weblogic,我们都知道,WebLogic server在服务器启动时在域/HOME/servers/server\u NAME目录下创建日志目录。但是现在我希望WebLogic在服务器启动时创建我的特定于应用程序的日志目录,如下所示 DOMAIN_HOME/servers/SERVER_NAME/logs/myAppLogs/ 在何处对此进行配置更改 谢谢,, Chaitanya请参见管理控制台中的联机帮助 编辑:根据评论,OP实际上希望一个文件附加器创建父路径的目录(如果它们不存在)。我不知道使用了什么

我们都知道,WebLogic server在服务器启动时在
域/HOME/servers/server\u NAME
目录下创建
日志
目录。但是现在我希望WebLogic在服务器启动时创建我的特定于应用程序的日志目录,如下所示

DOMAIN_HOME/servers/SERVER_NAME/logs/myAppLogs/
在何处对此进行配置更改

谢谢,, Chaitanya

请参见管理控制台中的联机帮助

编辑:根据评论,OP实际上希望一个文件附加器创建父路径的目录(如果它们不存在)。我不知道使用了什么版本的weblogic或log4j,但据我所知,log4j的旧版本没有实现这种行为:

我们不能假设log4j将拥有目录创建权限,只能写 对配置中指定的文件的权限。这取决于服务器 管理员控制目录树

这应该在版本1.2.12及更高版本中修复

PS:我真的更喜欢在一台机器上找到相同位置的所有日志,例如
/var/log/weblogic//myApp-${weblogic.Name}.log
。查找最后一个更改的文件,如
grep
日志文件等,非常容易。

请参阅管理控制台联机帮助中的

编辑:根据评论,OP实际上希望一个文件附加器创建父路径的目录(如果它们不存在)。我不知道使用了什么版本的weblogic或log4j,但据我所知,log4j的旧版本没有实现这种行为:

我们不能假设log4j将拥有目录创建权限,只能写 对配置中指定的文件的权限。这取决于服务器 管理员控制目录树

这应该在版本1.2.12及更高版本中修复


PS:我真的更喜欢在一台机器上找到相同位置的所有日志,例如
/var/log/weblogic//myApp-${weblogic.Name}.log
。很容易找到最后一个更改的文件,即
grep
日志文件等。

应该将log4jconfig.xml文件配置为在所需位置生成日志文件。log4jconfg.xml文件中的示例param props如下所示

<param name="File" value="DOMAIN_HOME/servers/SERVER_NAME/logs/myAppLogs/MyLog.txt"/>
<param name="Append" value="true"/>
<param name ="MaxFileSize" value="20480KB"/>
<param name="ConversionPattern" value="%d %p %c %x - %m%n"/>

应将log4jconfig.xml文件配置为在所需位置生成日志文件。log4jconfg.xml文件中的示例param props如下所示

<param name="File" value="DOMAIN_HOME/servers/SERVER_NAME/logs/myAppLogs/MyLog.txt"/>
<param name="Append" value="true"/>
<param name ="MaxFileSize" value="20480KB"/>
<param name="ConversionPattern" value="%d %p %c %x - %m%n"/>

您可以在下面尝试,这是在weblogic服务器上使用的,其中weblogic.Name默认添加在启动时的java系统属性中,大多数默认添加在多个weblogic托管节点上

<param name="File" value="servers/${weblogic.Name}/logs/${weblogic.Name}-specific-name.log"/>

您可以在下面尝试,这是在weblogic服务器上使用的,其中weblogic.Name默认添加在启动时的java系统属性中,大多数默认添加在多个weblogic托管节点上

<param name="File" value="servers/${weblogic.Name}/logs/${weblogic.Name}-specific-name.log"/>


您所说的“特定于应用程序的”日志是什么意思?这些日志是由您的应用程序使用日志API(如log4j)生成的吗?是的。我的应用程序的日志是使用log4j生成的。您所说的“特定于应用程序的”日志是什么意思?这些日志是由您的应用程序使用日志API(如log4j)生成的吗?是的。我的应用程序日志是使用log4j生成的。我希望我的应用程序日志在特定位置使用log4j生成。如何做到这一点?您的应用程序是否具有log4j.properties或log4j.xml配置文件?这是应该配置的地方。我使用log4j.properties,但在这里我提到了日志文件的位置,如下所示:log4j.appender.dailyRollingFile.file=servers/${weblogic.Name}/logs/myAppLogs/myApp.log,但我得到以下异常:log4j:ERROR setFile(null,true)调用失败。java.io.FileNotFoundException:servers\ms1\logs\myAppLogs\myApp.log(系统找不到指定的路径)这是因为WebLogic本身不创建myAppLogs文件夹。我最初的问题是如何让WL创建myAppLogs文件夹,以便Log4J可以在其中创建myApp.log。希望我清楚了。好吧,现在更清楚了,但是1。您应该在问题2中添加这些详细信息。由于您不够清晰,我觉得否决我的答案是不公平的。我希望我的应用程序日志在特定位置使用Log4J生成。如何做到这一点?您的应用程序是否有Log4J.properties或Log4J.xml配置文件?这是应该配置的地方。我使用log4j.properties,但在这里我提到了日志文件的位置,如下所示:log4j.appender.dailyRollingFile.file=servers/${weblogic.Name}/logs/myAppLogs/myApp.log,但我得到以下异常:log4j:ERROR setFile(null,true)调用失败。java.io.FileNotFoundException:servers\ms1\logs\myAppLogs\myApp.log(系统找不到指定的路径)这是因为WebLogic本身不创建myAppLogs文件夹。我最初的问题是如何让WL创建myAppLogs文件夹,以便Log4J可以在其中创建myApp.log。希望我清楚了。好吧,现在更清楚了,但是1。您应该在问题2中添加这些详细信息。因为你不够清楚,我觉得否决我的答案是不公平的。