2
2
import datetime
3
3
import functools
4
4
from . import _iris
5
- import intersystems_iris .dbapi ._DBAPI as irisdbapi
6
5
import signal
7
6
from dataclasses import dataclass
8
7
@@ -178,21 +177,22 @@ def format_log(row: list) -> str:
178
177
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 ])
179
178
180
179
@staticmethod
181
- def read_top_log (cursor , top ) -> list :
180
+ def read_top_log (top ) -> list :
182
181
sql = """
183
182
SELECT top ?
184
183
ID, ConfigName, Job, MessageId, SessionId, SourceClass, SourceMethod, Stack, Text, TimeLogged, TraceCat, Type
185
184
FROM Ens_Util.Log
186
185
order by id desc
187
186
"""
188
187
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 :
191
191
result .append (_Director .format_log (row ))
192
192
return result
193
193
194
194
@staticmethod
195
- def read_log (cursor ) -> list :
195
+ def read_log () -> list :
196
196
sql = """
197
197
SELECT
198
198
ID, ConfigName, Job, MessageId, SessionId, SourceClass, SourceMethod, Stack, Text, TimeLogged, TraceCat, Type
@@ -201,8 +201,12 @@ def read_log(cursor) -> list:
201
201
order by id desc
202
202
"""
203
203
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 :
206
210
result .append (_Director .format_log (row ))
207
211
return result
208
212
@@ -211,14 +215,12 @@ async def _log_production_async(handler):
211
215
""" Log production
212
216
if ctrl+c is pressed, the log is stopped
213
217
"""
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 )
222
224
223
225
@staticmethod
224
226
def log_production_top (top = 10 ):
@@ -227,10 +229,8 @@ def log_production_top(top=10):
227
229
Parameters:
228
230
top: the number of log to display
229
231
"""
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 )
234
234
235
235
@staticmethod
236
236
def log_production ():
@@ -240,10 +240,10 @@ def log_production():
240
240
loop = asyncio .get_event_loop ()
241
241
handler = SigintHandler (log_only = True )
242
242
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
+
247
247
loop .run_until_complete (_Director ._log_production_async (handler ))
248
248
loop .close ()
249
249
0 commit comments