<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Answers to: show sql query when query ivy task</title><link>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task</link><description>&lt;p&gt;Dear IvyTeam&lt;/p&gt;
&lt;p&gt;How can I print sql query to log file when there are some get ivy task by query?&lt;/p&gt;
&lt;p&gt;I followed this link &lt;a href="https://answers.axonivy.com/questions/1585/hibernate-show_sql"&gt;https://answers.axonivy.com/questions/1585/hibernate-show_sql&lt;/a&gt; but it seem for project that using hibernate?&lt;/p&gt;
&lt;p&gt;If I print query by method TaskQuery query.toString() I got some kind of query in log but it's not friendly with normal sql like below&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT *  
  FROM IWA_Task  
  LEFT JOIN IWA_TaskAdditionalProperty TaskAddPrp_isDeleted ON Column(IWA_TaskQuery.TaskId) = Column(IWA_TaskAdditionalProperty.TaskId)
  LEFT JOIN IWA_AdditionalProperty AddPrpTask_isDeleted ON Column(TaskAddPrp_isDeleted.AdditionalPropertyId) = Column(IWA_AdditionalProperty.AdditionalPropertyId)
  INNER JOIN IWA_CaseQuery ON (Column(IWA_CaseQuery.CaseId) = Column(IWA_TaskQuery.CaseId) || Column(IWA_CaseQuery.CaseId) = Column(IWA_TaskQuery.BusinessCaseId))
  LEFT JOIN IWA_CaseAdditionalProperty CaseAddPrp_taskType ON Column(IWA_Case.CaseId) = Column(IWA_CaseAdditionalProperty.CaseId)
  LEFT JOIN IWA_AdditionalProperty AddPrpCase_taskType ON Column(CaseAddPrp_taskType.AdditionalPropertyId) = Column(IWA_AdditionalProperty.AdditionalPropertyId)
  WHERE (Column(IWA_TaskQuery.CurrentActivatorName) NOT LIKE #SYSTEM &amp;amp;&amp;amp; Column(IWA_TaskQuery.State) &amp;lt;&amp;gt; 3 &amp;amp;&amp;amp; (((Column(AddPrpTask_isDeleted.Name) = isDeleted || Column(AddPrpTask_isDeleted.Name) IS NULL) &amp;amp;&amp;amp; Column(AddPrpTask_isDeleted.Value) IS NULL) || ((Column(AddPrpTask_isDeleted.Name) = isDeleted || Column(AddPrpTask_isDeleted.Name) IS NULL) &amp;amp;&amp;amp; Column(AddPrpTask_isDeleted.Value) NOT LIKE true)) &amp;amp;&amp;amp; (Column(IWA_TaskQuery.CurrentActivatorUserId) = 64104 || (! Column(IWA_Task.State) = 3 &amp;amp;&amp;amp; (Column(IWA_Task.ActivatorRoleId) = 204 || (Column(IWA_Task.IsExpired) = 1 &amp;amp;&amp;amp; Column(IWA_Task.ExpiryActivatorRoleId) = 204))) || (! Column(IWA_Task.State) = 3 &amp;amp;&amp;amp; (Column(IWA_Task.ActivatorRoleId) = 205 || (Column(IWA_Task.IsExpired) = 1 &amp;amp;&amp;amp; Column(IWA_Task.ExpiryActivatorRoleId) = 205))) || (! Column(IWA_Task.State) = 3 &amp;amp;&amp;amp; (Column(IWA_Task.ActivatorRoleId) = 902 || (Column(IWA_Task.IsExpired) = 1 &amp;amp;&amp;amp; Column(IWA_Task.ExpiryActivatorRoleId) = 902)))) &amp;amp;&amp;amp; (Column(IWA_TaskQuery.State) = 4 || Column(IWA_TaskQuery.State) = 5 || Column(IWA_TaskQuery.State) = 8) &amp;amp;&amp;amp; ((Column(AddPrpCase_taskType.Name) = taskType || Column(AddPrpCase_taskType.Name) IS NULL) &amp;amp;&amp;amp; Column(AddPrpCase_taskType.Value) LIKE CONTINUE_CREATE_KLARAHOME_COMPANY))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Do you have any idea about it?
How can I print sql?&lt;/p&gt;</description><atom:link href="https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task" rel="self"></atom:link><language>en</language><lastBuildDate>Tue, 07 Aug 2018 07:48:05 -0400</lastBuildDate><item><title>Comment by Reguel Wermelinger on Reguel Wermelinger's answer</title><link>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task#3382</link><description>&lt;p&gt;Today it is not possible to see the values for SystemDB queries. The exception is the cryptic toString() functionality of the TaskQuery instance itself.
External Database queries have a mature logging and performance measuring stack included which exposes the real SQL query that was fired.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Reguel Wermelinger</dc:creator><pubDate>Tue, 07 Aug 2018 07:48:05 -0400</pubDate><guid>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task#3382</guid></item><item><title>Comment by maidanh on Reguel Wermelinger's answer</title><link>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task#3380</link><description>&lt;p&gt;I have another question that. With this configuration we only can see sql query with question mark.
How can we show (sql query + param value instead of question mark)?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">maidanh</dc:creator><pubDate>Tue, 31 Jul 2018 23:35:43 -0400</pubDate><guid>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task#3380</guid></item><item><title>Comment by maidanh on Reguel Wermelinger's answer</title><link>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task#3378</link><description>&lt;p&gt;It works like a charm, I'm very appreciate you&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">maidanh</dc:creator><pubDate>Tue, 31 Jul 2018 00:14:53 -0400</pubDate><guid>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task#3378</guid></item><item><title>Answer by Reguel Wermelinger</title><link>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task/3373</link><description>&lt;p&gt;Hi &lt;/p&gt;
&lt;p&gt;Basically you can enable a logger that prints out all statements that are executed by Axon.ivy engine against the System Database. It will grow big, so I suggest that you put into an extra file:&lt;/p&gt;
&lt;p&gt;Open &lt;code&gt;[engineDir]/configuration/log4jconfig.xml&lt;/code&gt; and route all logs of the persistence to a custom appender called &lt;code&gt;sqlLog&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;category name="ch.ivyteam.ivy.persistence.db" class="ch.ivyteam.log.Logger"&amp;gt;
    &amp;lt;appender-ref ref="sqlLog"/&amp;gt;
    &amp;lt;priority value="DEBUG"/&amp;gt;
  &amp;lt;/category&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Declare the appender as FileLog (copy the normal file logger and adjust):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;appender name="sqlLog" class="org.apache.log4j.DailyRollingFileAppender"&amp;gt;
    &amp;lt;param name="Threshold" value="DEBUG"/&amp;gt;
    &amp;lt;param name="File" value="${user.dir}/logs/sql.log"/&amp;gt;
    &amp;lt;param name="DatePattern" value="'.'yyyy-MM-dd"/&amp;gt;
    &amp;lt;layout class="ch.ivyteam.log.layout.IvyLog4jLayout"&amp;gt;
      &amp;lt;param name="DateFormat" value="HH:mm:ss.SSS"/&amp;gt;
    &amp;lt;/layout&amp;gt;
  &amp;lt;/appender&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result will be a file under /logs/sql.log&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;full sample: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&amp;gt;

&amp;lt;!--
  This is the logging configuration file for Axon.ivy Engine.
  It defines which log messages are logged (category/priority) and where the logs are written to.

  Logging in Axon.ivy Engine is based on a 3rd party library called Log4J 
  (see &lt;a href="http://logging.apache.org/log4j"&gt;http://logging.apache.org/log4j&lt;/a&gt; for more information).

--&amp;gt;
&amp;lt;log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/"&amp;gt;

  &amp;lt;!--
   Defines an appender that will write log messages with at least priority INFO to a file
   that is located in the logs directory and is called ch.ivyteam.ivy.log with
   a prefix of the current date.
   Every day a new file will be created.  
  --&amp;gt; 
  &amp;lt;appender name="FileLog" class="org.apache.log4j.DailyRollingFileAppender"&amp;gt;
    &amp;lt;param name="Threshold" value="INFO"/&amp;gt;
    &amp;lt;param name="File" value="${user.dir}/logs/ch.ivyteam.ivy.log"/&amp;gt;
    &amp;lt;param name="DatePattern" value="'.'yyyy-MM-dd"/&amp;gt;
    &amp;lt;layout class="ch.ivyteam.log.layout.IvyLog4jLayout"&amp;gt;
      &amp;lt;param name="DateFormat" value="HH:mm:ss.SSS"/&amp;gt;
    &amp;lt;/layout&amp;gt;
  &amp;lt;/appender&amp;gt;

  &amp;lt;appender name="sqlLog" class="org.apache.log4j.DailyRollingFileAppender"&amp;gt;
    &amp;lt;param name="Threshold" value="DEBUG"/&amp;gt;
    &amp;lt;param name="File" value="${user.dir}/logs/sql.log"/&amp;gt;
    &amp;lt;param name="DatePattern" value="'.'yyyy-MM-dd"/&amp;gt;
    &amp;lt;layout class="ch.ivyteam.log.layout.IvyLog4jLayout"&amp;gt;
      &amp;lt;param name="DateFormat" value="HH:mm:ss.SSS"/&amp;gt;
    &amp;lt;/layout&amp;gt;
  &amp;lt;/appender&amp;gt;

  &amp;lt;!--
   Defines an appender that will write log messages with at least a priority WARN to the console  
  --&amp;gt;  
  &amp;lt;appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"&amp;gt;
    &amp;lt;param name="Threshold" value="WARN"/&amp;gt;
    &amp;lt;layout class="ch.ivyteam.log.layout.IvyLog4jLayout"&amp;gt;
      &amp;lt;param name="DateFormat" value="HH:mm:ss.SSS"/&amp;gt;
      &amp;lt;param name="ContextPrinting" value="false"/&amp;gt;
      &amp;lt;param name="FixedCategoryLength" value="20"/&amp;gt;
      &amp;lt;param name="ThreadPrinting" value="false"/&amp;gt;
    &amp;lt;/layout&amp;gt;
  &amp;lt;/appender&amp;gt;

  &amp;lt;!-- Prevent "ClientAbortException: java.io.IOException: Broken pipe" from filling the log --&amp;gt;
  &amp;lt;category name="org.apache.myfaces.application.ResourceHandlerImpl" class="ch.ivyteam.log.Logger"&amp;gt;
    &amp;lt;priority value="FATAL"/&amp;gt;
  &amp;lt;/category&amp;gt;

  &amp;lt;!-- Disable deprecated integer API warnings --&amp;gt;
  &amp;lt;!--
  &amp;lt;category name="ch.ivyteam.ivy.persistence.restricted.TableKeyCompatibilityConvertor" class="ch.ivyteam.log.Logger"&amp;gt;
    &amp;lt;priority value="ERROR"/&amp;gt;
  &amp;lt;/category&amp;gt;
  --&amp;gt;

  &amp;lt;!-- 
    Enables WebService SOAP Message logging for a certain application and process model. 
    Replace {application} and {process_model} in the logger name below with the name of the application and process model you want to enable the logging. 
  --&amp;gt;
  &amp;lt;!-- 
  &amp;lt;category name="runtimelog.{application}.{process_model}.web_service" class="ch.ivyteam.log.Logger"&amp;gt;
    &amp;lt;priority value="DEBUG"/&amp;gt;
  &amp;lt;/category&amp;gt;
  --&amp;gt;

&amp;lt;category name="ch.ivyteam.ivy.persistence.db" class="ch.ivyteam.log.Logger"&amp;gt;
    &amp;lt;appender-ref ref="sqlLog"/&amp;gt;
    &amp;lt;priority value="DEBUG"/&amp;gt;
  &amp;lt;/category&amp;gt;


  &amp;lt;!--
   Defines that every log message is written that has at least a priority of INFO. 
   Defines that log messages are written to the file and console appender defined above.
  --&amp;gt;
  &amp;lt;root&amp;gt; 
    &amp;lt;level value ="INFO" /&amp;gt;
    &amp;lt;appender-ref ref="FileLog"/&amp;gt;
    &amp;lt;appender-ref ref="ConsoleAppender"/&amp;gt;
  &amp;lt;/root&amp;gt;

&amp;lt;/log4j:configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Reguel Wermelinger</dc:creator><pubDate>Mon, 30 Jul 2018 06:53:48 -0400</pubDate><guid>https://answers.axonivy.com/questions/3370/show-sql-query-when-query-ivy-task/3373</guid></item></channel></rss>