我回到了我的第一个EclipseLink JPA项目,发现了一些与性能有关的问题。情况如下:
应用程序使用本地Apache Derby DB运行。在创建EntityManager期间,控制台会记录一些信息和警告,这需要几秒钟,但到目前为止还不错。但是,如果我将整个代码打包到一个可执行的jar中并在Eclipse之外运行它,整个过程会花费更多的时间。
现在虽然首先找到这个问题的原因是明智的,但我至少想添加一个ProgressBar以便粗略跟踪进度。
我查看了EclipseLink wiki,发现它已经具有PerformanceMonitor和一些日志记录实用程序。我现在陷入了将1和1放在一起的看似简单的任务。
如何使用EclipseLink连接ProgressBar?或者另一种方法:我如何首先记录EclipseLink的持续活动?
非常感谢任何帮助。
干杯
答案 0 :(得分:3)
以下是为具有EclipseLink JPA的SE项目(非应用程序服务器)生成日志文件的步骤:
打开文件“persistence.xml”并分配以下属性:
property name =“eclipselink.logging.logger”value =“JavaLogger”
property name =“eclipselink.logging.level”value =“FINEST”
handlers = java.util.logging.FileHandler,java.util.logging.ConsoleHandler
#默认全局日志记录级别。
.level = FINEST
#default file output在用户的主目录中
#java.util.logging.FileHandler.pattern =%h / java%u.log
#但我更喜欢硬连线如下:
java.util.logging.FileHandler.pattern = C \:/ SamLogFile.log
java.util.logging.FileHandler.level = FINER
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#我个人并不关心stdout日志记录,所以我将其关闭。
java.util.logging.ConsoleHandler.level = OFF
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format =%4 $ s:%5 $ s [%1 $ tc]%n
现在,您可以通过导入:
在您的课程中添加一些日志记录import java.util.logging.Level;
import java.util.logging.Logger;
并致电:
public void yourMethod() {
Logger.getLogger( YourClassName.class.getName() ).log( Level.INFO, "I am logging well......!" ); }
现在你已经准备好了。运行/测试您的项目并享受阅读您的日志!
答案 1 :(得分:3)
您还可以通过将2个文件slf4j-api-1.7.1.jar和文件slf4j-jdk14-1.7.1.jar添加到类路径中来将日志记录代码转换为最佳实践。这两个文件将从http://www.slf4j.org/download.html
下载向您的班级添加导入:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
然后在此方法中添加以下内容:
LoggerFactory.getLogger(Mysafeperson.class.getName()).info("I am logging using the slf4j api");
这种做法是使用slf4j api而不是java.util.logging(JUL)api来创建代码。因此,您的代码与JUL分离,并准备好将任何日志记录框架绑定为slf4j实现(选项是logback - log4j - 或refer to this link.)
我在此推广的想法是基于http://www.slf4j.org/legacy.html中的文档。所以:
请注意,JUL中可用的已定义级别为:
因此,不要使用slf4j api的级别(Error - TRACE - DEBUG),它们不会触发任何日志记录级别。 INFO和WARN可以使用
对于EclipseLink,请注意您仍然使用JUL配置文件logging.properties
答案 2 :(得分:2)
您应该通过在persistence.xml文件的持久单元属性中添加它来启用eclipselink日志记录:
<property name="eclipselink.logging.level" value="DEBUG"/>
启用最详细的日志记录,如果还不够,甚至“ALL”而不是“DEBUG”。但是在进入生产时将其移除,或者该线本身会使其变慢。
可能使eclipse链接变慢的两个常见问题是:
在不需要的时候在persistence.xml中使用它:
<property name="eclipselink.ddl-generation" value="create-tables"/>
并且没有这个(如果你在persistence.xml文件中声明de类。如果不这样做,请将它设置为false):
<exclude-unlisted-classes>true</exclude-unlisted-classes>
从进度条开始,我会说它会非常难,而且不准确,因为即使是eclipselink也不知道它在开始时会处理的全部课程数量,所以我觉得这不值得努力,但如果你找到办法,那就好运。