繁体   English   中英

有什么方法可以创建可重复使用的日志记录项目以用于Web应用程序?

[英]Is there any way I can create a reusable logging project for use in web-applications?

我想知道是否可以在eclipse中创建项目 ,或者可以在任何Java IDE中创建我的log4j初始化代码并将其保存为项目,以便仅将其导入任何工作区中的问题。 我知道如何配置servlet,在该方法中,我通过init()方法初始化记录器,并在启动时加载该servlet,但这需要在web-xml输入一个条目,该条目会根据应用程序而变化。

有什么方法可以创建不需要依赖DD的可重续项目?

我知道如何配置一个servlet,在该Servlet中,我使用init()方法初始化记录器,并在启动时加载该servlet。

可能有更好的方法。

例如,我在servlet上进行log4j配置的方法(使用Tomcat)是将“ log4j.properties”文件简单地放在类路径中; 例如在“ ... / webapps / MyApp / WEB-INF / classes /”中。 Log4j定位日志记录属性的默认策略可以在其中找到它,而无需编写任何Java代码。

从Java代码配置日志记录系统(IMO)是一个坏主意,因为这意味着您必须更改,重建和重新部署Java代码才能调整日志记录。

除了@Stephen C的答案之外,某些应用程序服务器已经带有预定义的日志配置。 如果您使用的是JBoss,它在名为jboss-log4j.xml的文件中已经具有自己的log4j配置,该文件定义了一个标准配置,您可以根据需要进行配置。

除此之外,我建议像其他答案中所述将配置与您的应用程序捆绑在一起。

更智能,更灵活的方法是在应用程序中使用日志包装器,该包装器将从底层的日志记录框架中抽象出来。 看看这些:

如果使用其中之一,则可以将它们配置为使用要部署到的服务器的日志记录框架。 出于类似的原因,许多流行的开源框架都使用这些日志包装器框架。 看看它们,然后采用其中的一个作为标准-我强烈推荐SLF4J。

Web应用程序内部使用日志记录框架的主要问题之一是,您通常最终想要写入文件,而servlet API不允许这样做,这导致您变得与供应商有微妙的依赖关系,并且无法正常工作多计算机部署。

我强烈建议您考虑将代码转换为将SLJF4用于实际的日志记录语句,因为它允许您

  • 变得独立于后端。
  • 使用“ {}”占位符可以简单地编写log.debug("a={}, b={}", a, b)并避免在未启用调试日志而未启用调试日志的情况下生成实际日志字符串的可能昂贵的log.debug("a={}, b={}", a, b) if log.debugging-enabled语句,则添加防护。

这两个原因足以让我切换。

处理日志的一种非常有趣的方法是使用java.util.logging桥将所有日志语句发送到大多数Web容器处理的Java日志系统。 然后,Web容器将为您完成所有工作,并且您可以使用供应商工具来调查日志文件。 很有用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM