How can I print JDBC driver logs to the Services panel's output?
Answered
I have developed a JDBC driver to read a data stream and present the data in a table like querying MySQL.

When querying the data stream in the driver, there are some log outputs to facilitate understanding the progress of the query. I want to print these log outputs to the output. Can someone please tell me how to do this? Thank you very much.

Please sign in to leave a comment.
Hi cpwm,
You can independently retrieve your JDBC output on-the-fly during query execution and display it in the Output.
To output, you need to use
com.intellij.database.datagrid.DataRequest.Contextwith your query.It has methods like
print,warn,errorthat you can use to write something to the Output (please, for your purpose, use the methodwarn).To get
com.intellij.database.datagrid.DataRequest.Context, you can add yourcom.intellij.database.datagrid.DataAuditor:val listener = MyDataAuditor()Disposer.register(console, listener)console.messageBus.addAuditor(listener)The only way you can accomplish that is to implement getAllWarnings() methods for result set or statements and return your messages in them
Thank you very much
There is a problem with using the getAllWarnings() method to print logs is that logs cannot be printed in real time and will be printed after the sql execution is complete.
If I print sql execution log in DatabaseConnectionInterceptor implementation class , Is there any way to do that?
Thank you very much.
Anna Rodionova Thank you for your reply, I wanted to make a try, but reported an error, I tried to solve, did not find the answer. I really can't find this class in the sdk.

The class not found issue, not found
The problem with the class(com.intellij.database.datagrid.GridDataRequest) not being found has been solved by adding the "intellij.grid.core.impl" dependency in the build.gradle.kts file。