Membuat Timestamp Pada Log Odoo Sesuai Timezone

Assalamu'alaikum warahmatullahi wabarakaatuh


Pada kesempatan kali ini saya akan membagikan cara agar timestamp pada log di odoo service sesuai dengan timezone yang kita inginkan.

Timestamp pada sebuah log adalah hal yang paling penting karna ketika terjadi error di server atau Odoo service mati kita dapat mengetauhi kapan itu terjadi dari timestamp yang ada pada log tersebut. Di Odoo default timestamp menggunakan UTC dan di indonesia  timezonenya adalah GMT+7, berarti akan selisih setitar 7 jam dari log Odoo. Hal ini membuat server seakan akan tidak real time, padahal ada perbedaan timezone dengan default odoo. untuk dapat mengkonfigurasi log timezone di Odoo caranya sebagai berikut.

Pertama pada file odoo/netsvc.py tambahkan kodingan berikut di atas

import pytz
from datetime import datetime


Kemudian di dalam  class DBFormatter tambahkan kodingan di bawah ini

def converter(self, timestamp):
if tools.config.get('timezone'):
return datetime.fromtimestamp(timestamp, pytz.timezone(tools.config['timezone']))
else:
return datetime.fromtimestamp(timestamp)

def formatTime(self, record, datefmt=None):
dt = self.converter(record.created)
if datefmt:
s = dt.strftime(datefmt)
else:
try:
t = dt.strftime(self.default_time_format)
except AttributeError:
t = dt.strftime("%Y-%m-%d %H:%M:%S")
try:
s = self.default_msec_format % (t, record.msecs)
except AttributeError:
s = "%s,%03d" % (t, record.msecs)
return s


lalu save dan di file konfigurasi odoo tambahkan timezone = [Timezone] seperti gambar di bawah ini


 Semoga Bermanfaat.


Sumber : [DEC][FIX] netsvc: Use timezone from config file to log messages · decgroupe/odoo-ocb@c7b7af6 · GitHub


Running and Debug Odoo Service Using VSCode