gpt4 book ai didi

java - 如果应用程序部署为 war 存档,则不会加载 Logj4

转载 作者:行者123 更新时间:2023-11-28 23:29:17 27 4
gpt4 key购买 nike

我有一个带有大量 Web 应用程序目录的 Tomcat 6 服务器,并且我已经设置了 Log4J。它适用于所有不是通过 war 文件部署的应用程序目录。

当前配置如下所示:

/tomcat/lib/log4j.properties

# Define all the appenders
log4j.appender.root=org.apache.log4j.RollingFileAppender
log4j.appender.root.File=${catalina.base}/logs/tomcat.log
log4j.appender.root.Append=true
log4j.appender.root.MaxFileSize=1MB
log4j.appender.root.MaxBackupIndex=5
log4j.appender.root.Encoding=UTF-8
log4j.appender.root.layout=org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.rootLogger=INFO, root

在每一个网络应用程序中:

/content/pages/WEB-INF/classes/log4j.properties

log4j.appender.root=org.apache.log4j.RollingFileAppender
log4j.appender.root.File=${catalina.base}/logs/pages/root.log
log4j.appender.root.Append=true
log4j.appender.root.MaxFileSize=1MB
log4j.appender.root.MaxBackupIndex=5
log4j.appender.root.Encoding=UTF-8
log4j.appender.root.layout=org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern=%-5p %d (%c)%m%n

log4j.appender.pages=org.apache.log4j.RollingFileAppender
log4j.appender.pages.File=${catalina.base}/logs/pages/pages.log
log4j.appender.pages.Append=true
log4j.appender.pages.MaxFileSize=1MB
log4j.appender.pages.MaxBackupIndex=5
log4j.appender.pages.Encoding=UTF-8
log4j.appender.pages.layout=org.apache.log4j.PatternLayout
log4j.appender.pages.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

log4j.rootLogger=WARN, root
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[content].[/pages]=WARN, pages

现在那个不起作用:我的/content 目录中有一个文件“homepageDev.war”,每次我重新启动 Tomcat 服务器或手动触发它时都会部署它。

/content/homepageDev/WEB-INF/classes/log4j.properties

log4j.appender.root=org.apache.log4j.RollingFileAppender 
log4j.appender.root.File=${catalina.base}/logs/homepage_dev/root.log
log4j.appender.root.Append=true
log4j.appender.root.MaxFileSize=1MB
log4j.appender.root.MaxBackupIndex=5
log4j.appender.root.Encoding=UTF-8
log4j.appender.root.layout=org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.homepage=org.apache.log4j.RollingFileAppender
log4j.appender.homepage.File=${catalina.base}/logs/homepage_dev/homepage_dev.log
log4j.appender.homepage.Append=true
log4j.appender.homepage.MaxFileSize=1MB
log4j.appender.homepage.MaxBackupIndex=5
log4j.appender.homepage.Encoding=UTF-8
log4j.appender.homepage.layout=org.apache.log4j.PatternLayout
log4j.appender.homepage.layout.ConversionPattern=%-5p %d (%c)%m%n

log4j.rootLogger=DEBUG, root
log4j.logger.com.mycompany.web.homepage=DEBUG, homepage

我已经将 Tomcat 设置为在 Debug模式下使用 Log4J 启动,并且我获得了所有其他应用程序(例如/pages)的大量调试信息。但是对于 homepageDev.war 应用程序,我什么也得不到。

日志中唯一的内容是:

[/manager]- Manager: deploy: Deploying web application at '/homepageDev'
[/manager]- Manager: Uploading WAR file to /content/homepageDev.war
Deploying web application archive homepageDev.war

在我的应用程序中,我按如下方式使用 Log4J:我有 servlets:

private static Logger logger = Logger.getLogger(DatabaseJsonServlet.class);

在我调用的 init 方法中:

logger.debug();

最佳答案

Log4j 只会 self 初始化一次,使用线程的当前类加载器加载log4j.properties。因此,如果应用程序 A 首先加载,则 log4j 将读取应用程序 A 的 log4j.properties 文件,然后再也不会读取另一个 log4j.properties 文件

如果你想在每个应用程序中都能够单独使用log4j,那么你需要将log4j-1.2.16.jar放在WEB-INF/lib中用于每个网络应用程序。

关于java - 如果应用程序部署为 war 存档,则不会加载 Logj4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32759004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com