java - 我可以使用 Tomcat 上下文参数配置 Log4j 吗?

标签 java log4j tomcat6

我希望能够根据我部署 Java Web 应用程序的服务器在不同级别进行日志记录。例如,在我的测试服务器上,我希望以 DEBUG 级别进行日志记录,在生产服务器上,我希望以 WARN 级别进行日志记录。目前我的 log4.xml 文件位于我的 WAR 文件内。我希望能够使用 Tomcat 上下文参数配置 Web 应用程序的日志记录级别。这可能吗?

我已经看到可以使用环境变量和系统属性。例如,${catalina.home} 被解释。是否可以使用相同的功能来替换 Tomcat 上下文参数值?

例如,这将是 log4j.xml 片段:

<level value="${log.level}" 

其中 log.level 在 %TOMCAT_HOME%/conf/context.xml 中定义:

<Parameter name="log.level" value="DEBUG" />

我已经尝试了上面的方法,但似乎不起作用。 Google 没有为我找到任何与在 log4j 配置文件中使用上下文参数相关的内容。我发现this SO question使用系统属性做类似的事情,但它不使用 Tomcat 上下文参数,所以它不完全是我想要的。 log4j 配置中是否提供上下文参数值替换功能?我是否需要探索其他选项,例如使用外部 log4j.xml 文件?

最佳答案

我认为 Log4J 本身并没有这样做。我记得 Spring Web 框架附带了一个通过 web.xml 配置的监听器,它可能会做一些类似的事情。如果您真的愿意,我认为您可以获取该代码并使用它来创建您想要的东西。

关于java - 我可以使用 Tomcat 上下文参数配置 Log4j 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11746803/

相关文章:

java - 为什么我没有关于页面上下文的异常?

Java hmac 算法无法正常工作

java - Android Canvas : make a drawn line fade/alphaAnimation away on touch

Java UncaughtExceptionHandler + LOG4J + Maven

mysql - 无法从tomcat连接到MySQL数据库

java - 如何获取ItemProcessor中当前的资源名称?

java - log4j RollingFileAppender 创建的日志文件的权限

java - log4j2 SizeBasedTriggeringPolicy 每分钟创建文件

java - Spring AOP - 实现 spring aop 时不调用服务方法

javax.net.ssl.SSLHandshakeException : Remote host closed connection during handshake