我想知道我是否可以在eclipse中创建项目或任何Java IDE,我可以在其中编写我的log4j初始化代码并将其保存为项目,以便我可以将其导入任何工作空间我知道如何配置一个servlet,我在其中使用init()
方法初始化记录器并在启动时加载servlet,但这需要web-xml
中的一个条目,该条目会根据应用程序而变化。
有什么方法可以创建可恢复项目,而不需要依赖DD?
答案 0 :(得分:3)
我知道如何配置一个servlet,在其中我在init()方法中初始化记录器并在启动时加载servlet ...
可能有更好的方法。
例如,我在servlet上使用Tomcat执行log4j配置的方法是简单地将“log4j.properties”文件放在类路径上;例如在“... / webapps / MyApp / WEB-INF / classes /”中。 Log4j用于查找日志记录属性的默认策略将在那里找到它...而不需要您编写任何Java代码。
从Java代码配置日志系统是(IMO)一个坏主意,因为这意味着您必须更改,重建和重新部署Java代码以调整日志记录。
答案 1 :(得分:2)
除了@Stephen C的答案之外,一些应用程序服务器已经预先安装了日志记录配置。如果您正在使用JBoss,它已在名为log4j
的文件中拥有自己的jboss-log4j.xml
配置,该文件定义了一个标准配置,您可以根据自己的需要进行调整。
除此之外,我建议将配置与您的应用程序捆绑在一起,如其他答案所述。
更智能,更灵活的是在应用程序中使用日志包装器,它将从底层日志记录框架中抽象出来。看看这些:
如果您使用其中一个,则可以将它们配置为使用您正在部署的服务器的日志记录框架。许多流行的开源框架出于类似的原因使用这些日志包装器框架。看看它们,然后采用一个作为标准 - 我强烈推荐SLF4J。
答案 2 :(得分:2)
在Web应用程序中使用日志框架的一个主要问题是,您通常最终想要写入文件,而这在servlet API中是不允许的,导致您变得微妙地依赖于供应商,并且不适用于多计算机部署。
我强烈建议您考虑将代码转换为使用SLJF4作为实际的日志记录语句,因为它允许您
log.debug("a={}, b={}", a, b)
,如果未启用调试日志而无需添加保护if log.debugging-enabled
语句,则可以避免生成实际日志字符串的可能代价。 / LI>
这两个因素足以让我转换。
处理日志记录的一种非常有趣的方法是使用java.util.logging网桥将所有日志语句发送到大多数Web容器处理的Java日志系统。然后Web容器为您完成所有工作,您可以使用供应商工具来调查日志文件。非常有用!