打印我使用的登录控制台
MessageConsole console = new MessageConsole("System Output", null);
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { console }); ConsolePlugin.getDefault().getConsoleManager().showConsoleView(console);
MessageConsoleStream stream = console.newMessageStream();
System.setOut(new PrintStream(stream));
System.setErr(new PrintStream(stream));
String rootPath="D:/luna/sampleproject";
System.setProperty("file.log",rootPath+"logs/log_console.log");
正确打印日志 我的问题是它不会立即在swt onclick事件中打印日志。它打印日志所有过程完成。
我的示例代码是:
button_Ok.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
log.info("Before invoking the api call");
CreateDesign create=new CreateDesign();
boolean status=create.createDesign();//api invoked
log.info("Api invokoing is completed...");
}
}
这里在完成api调用的整个过程后打印日志消息。
如何立即打印日志?
答案 0 :(得分:1)
尝试使用
new PrintStream(stream, true)
使PrintStream
构造函数更快地刷新流。
答案 1 :(得分:0)
我的解决方案是: 我通过使用像as这样的另一个线程来调用api调用 button_Ok.addSelectionListener(new SelectionListener(){
@Override
public void widgetSelected(SelectionEvent e) {
log.info("Before invoking the api call");
Thread thread = new Thread(new createDesigns());
thread.start();
}
}
在另一个班级
public class createDesigns实现了Runnable {
@Override
public void run() {
CreateDesign create=new CreateDesign();
boolean status=create.createDesign();//api invoked
}
}
所以它立即打印日志