Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EclipseLink:如何为EclipseLink 2.7.0设置SLF4J记录器_Java_Jpa_Logging_Osgi_Eclipselink - Fatal编程技术网

Java EclipseLink:如何为EclipseLink 2.7.0设置SLF4J记录器

Java EclipseLink:如何为EclipseLink 2.7.0设置SLF4J记录器,java,jpa,logging,osgi,eclipselink,Java,Jpa,Logging,Osgi,Eclipselink,Bundleorg.eclipse.persistence.extension_2.7.0.qualifier.jar(我安装到osgi框架中)包含类org.eclipse.persistence.logging.slf4j.SLF4JLogger。在我的持久性文件中 <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.slf4j.SLF4JLogger"/> 我已经检

Bundle
org.eclipse.persistence.extension_2.7.0.qualifier.jar
(我安装到osgi框架中)包含类
org.eclipse.persistence.logging.slf4j.SLF4JLogger
。在我的持久性文件中

<property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.slf4j.SLF4JLogger"/>
我已经检查了bundle
org.eclipse.persistence.extension\u 2.7.0.qualifier.jar
没有导出包
org.eclipse.persistence.logging.slf4j
,所以,有人能解释一下如何让eclipselink登录到slf4j吗?

请确保包含“org.eclipse.persistence.extension”jar,它应该可以正常工作。我使用的maven坐标是

  <dependency>
     <groupId>org.eclipse.persistence</groupId>
     <artifactId>org.eclipse.persistence.extension</artifactId>
     <version>2.7.2</version>
     <scope>runtime</scope>
  </dependency>

org.eclipse.persistence
org.eclipse.persistence.extension
2.7.2
运行时
确保包含“org.eclipse.persistence.extension”jar,它应该可以正常工作。我使用的maven坐标是

  <dependency>
     <groupId>org.eclipse.persistence</groupId>
     <artifactId>org.eclipse.persistence.extension</artifactId>
     <version>2.7.2</version>
     <scope>runtime</scope>
  </dependency>

org.eclipse.persistence
org.eclipse.persistence.extension
2.7.2
运行时

由于
org.eclipse.persistence.logging.slf4j.SLF4JLogger
不是通过提供的包导出的,因此您必须在代码中修改它,方法是创建一个logger类,该类扩展
org.eclipse.persistence.logging.AbstractSessionLog
,并像在原始包中那样重写/实现一些方法
org.eclipse.persistence.logging.slf4j.SLF4JLogger

基本上,它只是EclipseLink原始记录器的副本

现在,在创建EntityManagerFactory时传递给PersistenceProvider的JPA属性映射中,添加EclipseLink日志记录类别和级别

Map<String, Object> properties = new HashMap<>();
// Add the necessary logging category and level as per your requirement.
properties.put("eclipselink.logging.level.connection", "FINE");
properties.put("eclipselink.logging.level.jpa", "FINER");
properties.put("eclipselink.logging.level.sql", "FINEST");
// and so on for other categories which can be found in
// org.eclipse.persistence.logging.SessionLog

// Now put your logger class in persistence properties map so that EclipseLink use your logger instance.
properties.put("eclipselink.logging.logger", <your logger>.class.getName());
Map properties=newhashmap();
//根据需要添加必要的日志记录类别和级别。
properties.put(“eclipseelink.logging.level.connection”、“FINE”);
properties.put(“eclipseelink.logging.level.jpa”、“FINER”);
properties.put(“eclipseelink.logging.level.sql”、“FINEST”);
//等其他类别,可在中找到
//org.eclipse.persistence.logging.SessionLog
//现在将您的logger类放在持久性属性映射中,以便EclipseLink使用您的logger实例。
properties.put(“eclipseelink.logging.logger”、.class.getName());
另外,请确保将以下具有您选择级别的记录器添加到日志后端

例如,使用Logback时,声明将如下所示

<logger name="eclipselink.logging" level="DEBUG" additivity="false">
    <appender-ref ref="ROLLING_FILE"/>
</logger>

来自一个开源项目,该项目改编了原始
org.eclipse.persistence.logging.slf4j.SLF4JLogger


希望这会有所帮助。

因为
org.eclipse.persistence.logging.slf4j.SLF4JLogger
不是通过提供的包导出的,所以您必须在代码中修改它,方法是创建一个logger类,该类扩展
org.eclipse.persistence.logging.AbstractSessionLogg
并覆盖/实现一些在原始包中完成的方法
org.eclipse.persistence.logging.slf4j.SLF4JLogger

基本上,它只是EclipseLink原始记录器的副本

现在,在创建EntityManagerFactory时传递给PersistenceProvider的JPA属性映射中,添加EclipseLink日志记录类别和级别

Map<String, Object> properties = new HashMap<>();
// Add the necessary logging category and level as per your requirement.
properties.put("eclipselink.logging.level.connection", "FINE");
properties.put("eclipselink.logging.level.jpa", "FINER");
properties.put("eclipselink.logging.level.sql", "FINEST");
// and so on for other categories which can be found in
// org.eclipse.persistence.logging.SessionLog

// Now put your logger class in persistence properties map so that EclipseLink use your logger instance.
properties.put("eclipselink.logging.logger", <your logger>.class.getName());
Map properties=newhashmap();
//根据需要添加必要的日志记录类别和级别。
properties.put(“eclipseelink.logging.level.connection”、“FINE”);
properties.put(“eclipseelink.logging.level.jpa”、“FINER”);
properties.put(“eclipseelink.logging.level.sql”、“FINEST”);
//等其他类别,可在中找到
//org.eclipse.persistence.logging.SessionLog
//现在将您的logger类放在持久性属性映射中,以便EclipseLink使用您的logger实例。
properties.put(“eclipseelink.logging.logger”、.class.getName());
另外,请确保将以下具有您选择级别的记录器添加到日志后端

例如,使用Logback时,声明将如下所示

<logger name="eclipselink.logging" level="DEBUG" additivity="false">
    <appender-ref ref="ROLLING_FILE"/>
</logger>

来自一个开源项目,该项目改编了原始
org.eclipse.persistence.logging.slf4j.SLF4JLogger


希望这会有所帮助。

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-这并不能回答这个问题。一旦你有足够的钱,你将能够;相反@NKSM我已经用足够的信息更新了我的答案。请看你是否仍然认为它没有回答这个问题。如果答案是正确的,请删除否决票。任何其他评论员都希望查看我提供的更新答案,我认为这完全解决了OP的问题。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-这并不能回答这个问题。一旦你有足够的钱,你将能够;相反@NKSM我已经用足够的信息更新了我的答案。请看你是否仍然认为它没有回答这个问题。如果答案是正确的,那么请删除否决票。任何其他评论员都希望查看我提供的更新答案,我认为这已经完全解决了OP的问题。