22import datetime
33import functools
44from . import _iris
5- import intersystems_iris .dbapi ._DBAPI as irisdbapi
65import signal
76from dataclasses import dataclass
87
@@ -178,21 +177,22 @@ def format_log(row: list) -> str:
178177 return str (row [9 ]) + ' ' + typ + ' ' + str (row [1 ]) + ' ' + str (row [2 ]) + ' ' + str (row [3 ]) + ' ' + str (row [4 ]) + ' ' + str (row [5 ]) + ' ' + str (row [6 ]) + ' ' + str (row [8 ])
179178
180179 @staticmethod
181- def read_top_log (cursor , top ) -> list :
180+ def read_top_log (top ) -> list :
182181 sql = """
183182 SELECT top ?
184183 ID, ConfigName, Job, MessageId, SessionId, SourceClass, SourceMethod, Stack, Text, TimeLogged, TraceCat, Type
185184 FROM Ens_Util.Log
186185 order by id desc
187186 """
188187 result = []
189- cursor .execute (sql , top )
190- for row in cursor :
188+ stmt = _iris .get_iris ().sql .prepare (sql )
189+ rs = stmt .execute (top )
190+ for row in rs :
191191 result .append (_Director .format_log (row ))
192192 return result
193193
194194 @staticmethod
195- def read_log (cursor ) -> list :
195+ def read_log () -> list :
196196 sql = """
197197 SELECT
198198 ID, ConfigName, Job, MessageId, SessionId, SourceClass, SourceMethod, Stack, Text, TimeLogged, TraceCat, Type
@@ -201,8 +201,12 @@ def read_log(cursor) -> list:
201201 order by id desc
202202 """
203203 result = []
204- cursor .execute (sql , (datetime .datetime .now () - datetime .timedelta (seconds = 1 ),))
205- for row in cursor :
204+ stmt = _iris .get_iris ().sql .prepare (sql )
205+ time = datetime .datetime .now () - datetime .timedelta (seconds = 1 )
206+ # convert to utc time
207+ time = time .astimezone (datetime .timezone .utc )
208+ rs = stmt .execute (time .isoformat (sep = ' ' ))
209+ for row in rs :
206210 result .append (_Director .format_log (row ))
207211 return result
208212
@@ -211,14 +215,12 @@ async def _log_production_async(handler):
211215 """ Log production
212216 if ctrl+c is pressed, the log is stopped
213217 """
214- with irisdbapi .connect (embedded = True ) as conn :
215- with conn .cursor () as cursor :
216- while True :
217- for row in reversed (_Director .read_log (cursor )):
218- print (row )
219- if handler .sigint_log :
220- break
221- await asyncio .sleep (1 )
218+ while True :
219+ for row in reversed (_Director .read_log ()):
220+ print (row )
221+ if handler .sigint_log :
222+ break
223+ await asyncio .sleep (1 )
222224
223225 @staticmethod
224226 def log_production_top (top = 10 ):
@@ -227,10 +229,8 @@ def log_production_top(top=10):
227229 Parameters:
228230 top: the number of log to display
229231 """
230- with irisdbapi .connect (embedded = True ) as conn :
231- with conn .cursor () as cursor :
232- for row in reversed (_Director .read_top_log (cursor , top )):
233- print (row )
232+ for row in reversed (_Director .read_top_log (top )):
233+ print (row )
234234
235235 @staticmethod
236236 def log_production ():
@@ -240,10 +240,10 @@ def log_production():
240240 loop = asyncio .get_event_loop ()
241241 handler = SigintHandler (log_only = True )
242242 loop .add_signal_handler (signal .SIGINT , functools .partial (handler .signal_handler , signal .SIGINT , loop ))
243- with irisdbapi . connect ( embedded = True ) as conn :
244- with conn . cursor () as cursor :
245- for row in reversed ( _Director . read_top_log ( cursor , 10 )):
246- print ( row )
243+
244+ for row in reversed ( _Director . read_top_log ( 10 )) :
245+ print ( row )
246+
247247 loop .run_until_complete (_Director ._log_production_async (handler ))
248248 loop .close ()
249249
0 commit comments