代码之家  ›  专栏  ›  技术社区  ›  BennyMcBenBen tunaranch

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

  •  0
  • BennyMcBenBen tunaranch  · 技术社区  · 13 年前

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

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

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

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

    哪里 日志级别 在%TOMCAT_HOME%/conf/context.xml中定义:

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

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

    2 回复  |  直到 13 年前
        1
  •  1
  •   Robert    13 年前

    我不认为Log4J是天生就这么做的。我记得SpringWebFramework附带了一个通过Web.xml配置的监听器,它可能会做一些类似的事情。如果你真的想,我想你可以获取代码,并用它来创建一些你想要的东西。

        2
  •  0
  •   Community CDub    8 年前

    我最近使用的一种方法是log4,用于对日志进行非常细粒度的控制 appender 。这比编辑配置文件多一点,但给了你难以置信的灵活性。看看我的答案 here 以获取关于如何配置其中一个的快速示例。