在WebSphere上使用slf4j进行OpenJPA日志记录
我的JavaEE6应用程序使用slf4j和logback作为日志框架。 现在我想将OpenJpa的SQL跟踪添加到我的日志文件中。OpenJpa文档说,我可以使用一个参数:在WebSphere上使用slf4j进行OpenJPA日志记录,websphere,slf4j,openjpa,Websphere,Slf4j,Openjpa,我的JavaEE6应用程序使用slf4j和logback作为日志框架。 现在我想将OpenJpa的SQL跟踪添加到我的日志文件中。OpenJpa文档说,我可以使用一个参数: <property name="openjpa.Log" value="slf4j"/> 我使用WebSphereApplicationServerV8.0.0.1作为JavaEE容器。如果将应用程序部署到服务器,则此参数不会改变任何内容。我可以在WebSphere管理控制台中更改日志级别,这很好。但是a不
<property name="openjpa.Log" value="slf4j"/>
我使用WebSphereApplicationServerV8.0.0.1作为JavaEE容器。如果将应用程序部署到服务器,则此参数不会改变任何内容。我可以在WebSphere管理控制台中更改日志级别,这很好。但是a不能绕过OpenJpa日志记录到我的slf4j框架
是否有人使用这种配置并解决了问题
顺便说一句,我知道,信息中心的文章
表示该参数将被忽略,但一切都应该是可能的,嗯?我不知道WAS 8.0中嵌入了哪个版本的OpenJPA 在OpenJPA1.x中,不可能使用“slf4j”。解决方法是将类
org.apache.openjpa.lib.log.SLF4JLogFactory
从openjpa 2.x源复制到您的应用程序中,并直接使用它:
<property name="openjpa.Log" value="org.apache.openjpa.lib.log.SLF4JLogFactory"/>
您可以始终直接指定工厂类名,短名称只是一种方便的技巧
在OpenJPA2.x中,存在SLF4JLogFactory
,因此它应该与您当前的设置一起工作;也许您将其设置在被其他配置覆盖的位置?例如,如果您通过EntityManagerFactory
的propertyMap配置JPA,它将优先于persistence.xml
中的设置
有四件事要做:
非常感谢您的回复!不幸的是,WebSpherePersistence实现似乎会忽略openjpa.Log参数。我使用的是默认的持久性提供程序(com.ibm.websphere.persistence.PersistenceProviderImpl),因此我可以使用容器提供的数据源。内置的OpenJPA也可以使用容器提供的数据源——如果没有这个,它会有点无用,不是吗?