Logger plugin is now available !

This commit is contained in:
Yann Leboulanger 2003-11-26 00:02:43 +00:00
parent 9919d53aa2
commit fd89e34226
5 changed files with 114 additions and 2 deletions

View File

@ -34,7 +34,10 @@ class GajimThread(threading.Thread):
# END __init__
def run(self):
#This is VERY bad
if self.getName() == 'gtkgui':
plugins.gtkgui.plugin(self.queueIn, self.queueOut)
elif self.getName() == 'logger':
plugins.logger.plugin(self.queueIn, self.queueOut)
# END run
# END GajimThread

View File

@ -121,6 +121,7 @@ class GajimCore:
if ev[0] == 'QUIT':
if self.connected == 1:
self.con.disconnect()
self.hub.sendPlugin('QUIT', ())
return
#('STATUS', status)
elif ev[0] == 'STATUS':
@ -138,6 +139,7 @@ class GajimCore:
msg = common.jabber.Message(ev[1][0], ev[1][1])
msg.setType('chat')
self.con.send(msg)
self.hub.sendPlugin('MSGSENT', ev[1])
#('SUB', (jid, txt))
elif ev[0] == 'SUB':
log.debug('subscription request for %s' % ev[1][0])
@ -189,4 +191,10 @@ def start():
gc.hub.register('gtkgui', 'AGENTS')
gc.hub.register('gtkgui', 'AGENT_INFO')
guiPl.load()
logPl = gc.hub.newPlugin('logger')
gc.hub.register('logger', 'MSG')
gc.hub.register('logger', 'MSGSENT')
gc.hub.register('logger', 'NOTIFY')
gc.hub.register('logger', 'QUIT')
logPl.load()
gc.mainLoop()

View File

@ -21,3 +21,10 @@ inmsgcolor = red
outmsgcolor = blue
iconstyle = sun
autopopup = 0
[Logger]
#Log notify messages in a separate file (notify.log)
lognotsep = 1
#Log notify messages in user log file
lognotusr = 1

View File

@ -1 +1,2 @@
import gtkgui
import logger

93
plugins/logger.py Normal file
View File

@ -0,0 +1,93 @@
#!/usr/bin/env python
## plugins/logger.py
##
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation; version 2 only.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
import os
import string
import time
import common.optparser
CONFPATH = "~/.gajimrc"
LOGPATH = os.path.expanduser("~/.gajim/logs/")
class plugin:
def read_queue(self):
while 1:
while self.queueIN.empty() == 0:
lognotsep = self.cfgParser.Logger_lognotsep
if lognotsep:
lognotsep = string.atoi(lognotsep)
else:
#default
lognotsep = 1
lognotusr = self.cfgParser.Logger_lognotusr
if lognotusr:
lognotusr = string.atoi(lognotusr)
else:
#default
lognotusr = 1
ev = self.queueIN.get()
if ev[0] == 'QUIT':
return
elif ev[0] == 'NOTIFY':
status = ev[1][2]
if not status:
status = ""
if lognotsep == 1:
fic = open(LOGPATH + "notify.log", "a")
fic.write("%d:%s:%s:%s\n" % (time.time(), ev[1][0], \
ev[1][1], status))
fic.close()
if lognotusr == 1:
fic = open(LOGPATH + ev[1][0], "a")
fic.write("%d:%s:%s:%s\n" % (time.time(), ev[1][0], \
ev[1][1], status))
fic.close()
elif ev[0] == 'MSG':
fic = open(LOGPATH + ev[1][0], "a")
fic.write("%d:recv:%s\n" % (time.time(), ev[1][1]))
fic.close()
elif ev[0] == 'MSGSENT':
fic = open(LOGPATH + ev[1][0], "a")
fic.write("%d:sent:%s\n" % (time.time(), ev[1][1]))
fic.close()
time.sleep(0.5)
def __init__(self, quIN, quOUT):
self.cfgParser = common.optparser.OptionsParser(CONFPATH)
self.cfgParser.parseCfgFile()
self.queueIN = quIN
self.queueOUT = quOUT
#create ~/.gajim/logs if it doesn't exist
try:
os.stat(os.path.expanduser("~/.gajim"))
except OSError:
os.mkdir(os.path.expanduser("~/.gajim"))
print "creating ~/.gajim/"
try:
os.stat(LOGPATH)
except OSError:
os.mkdir(LOGPATH)
print "creating ~/.gajim/logs/"
self.read_queue()
if __name__ == "__main__":
plugin(None, None)
print "plugin logger loaded"