mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-23 19:19:32 +01:00
Integrated sweede's patch and removed includeNetworkName (the directory structure rocks much more, and that just confused things).
This commit is contained in:
parent
325ad70187
commit
b4ad7ca863
@ -66,12 +66,6 @@ conf.registerChannelValue(conf.supybot.plugins.ChannelLogger, 'noLogPrefix',
|
|||||||
registry.String('[nolog]', """Determines what string a message should be
|
registry.String('[nolog]', """Determines what string a message should be
|
||||||
prefixed with in order not to be logged. If you don't want any such
|
prefixed with in order not to be logged. If you don't want any such
|
||||||
prefix, just set it to the empty string."""))
|
prefix, just set it to the empty string."""))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.ChannelLogger,
|
|
||||||
'includeNetworkName', registry.Boolean(True, """Determines whether the bot
|
|
||||||
will include the name of the network in the filename for channel logs.
|
|
||||||
Since this is a channel-specific value, you can override for any channel.
|
|
||||||
You almost certainly want this to be True if you're relaying in a given
|
|
||||||
channel."""))
|
|
||||||
conf.registerChannelValue(conf.supybot.plugins.ChannelLogger, 'rotateLogs',
|
conf.registerChannelValue(conf.supybot.plugins.ChannelLogger, 'rotateLogs',
|
||||||
registry.Boolean(False, """Determines whether the bot will automatically
|
registry.Boolean(False, """Determines whether the bot will automatically
|
||||||
rotate the logs for this channel. The bot will rotate logs when the
|
rotate the logs for this channel. The bot will rotate logs when the
|
||||||
@ -85,6 +79,24 @@ conf.registerChannelValue(conf.supybot.plugins.ChannelLogger,
|
|||||||
python.org. In order for your logs to be rotated, you'll also have to
|
python.org. In order for your logs to be rotated, you'll also have to
|
||||||
enable supybot.plugins.ChannelLogger.rotateLogs."""))
|
enable supybot.plugins.ChannelLogger.rotateLogs."""))
|
||||||
|
|
||||||
|
conf.registerGlobalValue(conf.supybot.plugins.ChannelLogger, 'directories',
|
||||||
|
registry.Boolean(True, """Determines whether the bot will partition its
|
||||||
|
channel logs into separate directories based on different criteria."""))
|
||||||
|
conf.registerGlobalValue(conf.supybot.plugins.ChannelLogger.directories,
|
||||||
|
'network', registry.Boolean(True, """Determines whether the bot will use
|
||||||
|
a network directory if using directories."""))
|
||||||
|
conf.registerGlobalValue(conf.supybot.plugins.ChannelLogger.directories,
|
||||||
|
'channel', registry.Boolean(True, """Determines whether the bot will use
|
||||||
|
a channel directory if using directories."""))
|
||||||
|
t = conf.registerGlobalValue(conf.supybot.plugins.ChannelLogger.directories,
|
||||||
|
'timestamp', registry.Boolean(False, """Determines whether the bot will use
|
||||||
|
a timestamp (determined by
|
||||||
|
supybot.plugins.ChannelLogger.directories.timestamp.format) if using
|
||||||
|
directories."""))
|
||||||
|
conf.registerGlobalValue(t, 'format', registry.String('%B', """Determines what
|
||||||
|
timestamp format will be used in the directory stucture for channel logs if
|
||||||
|
supybot.plugins.ChannelLogger.directories.timestamp is True."""))
|
||||||
|
|
||||||
class FakeLog(object):
|
class FakeLog(object):
|
||||||
def flush(self):
|
def flush(self):
|
||||||
return
|
return
|
||||||
@ -96,7 +108,8 @@ class FakeLog(object):
|
|||||||
class ChannelLogger(callbacks.Privmsg):
|
class ChannelLogger(callbacks.Privmsg):
|
||||||
noIgnore = True
|
noIgnore = True
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
callbacks.Privmsg.__init__(self)
|
self.__parent = super(ChannelLogger, self)
|
||||||
|
self.__parent.__init__()
|
||||||
self.lastMsg = None
|
self.lastMsg = None
|
||||||
self.laststate = None
|
self.laststate = None
|
||||||
self.logs = ircutils.IrcDict()
|
self.logs = ircutils.IrcDict()
|
||||||
@ -134,14 +147,6 @@ class ChannelLogger(callbacks.Privmsg):
|
|||||||
if e.args[0] != 'I/O operation on a closed file':
|
if e.args[0] != 'I/O operation on a closed file':
|
||||||
self.log.exception('Odd exception:')
|
self.log.exception('Odd exception:')
|
||||||
|
|
||||||
def registryValue(self, name, channel=None, **kwargs):
|
|
||||||
if channel is not None:
|
|
||||||
# This handles the possible #channel@network channels we might be
|
|
||||||
# getting. It's a hack, because we should know what we're doing,
|
|
||||||
# but apparently we don't.
|
|
||||||
channel = channel.split('@')[0]
|
|
||||||
return callbacks.Privmsg.registryValue(self, name, channel, **kwargs)
|
|
||||||
|
|
||||||
def logNameTimestamp(self, channel):
|
def logNameTimestamp(self, channel):
|
||||||
format = self.registryValue('filenameTimestamp', channel)
|
format = self.registryValue('filenameTimestamp', channel)
|
||||||
return time.strftime(format)
|
return time.strftime(format)
|
||||||
@ -152,6 +157,22 @@ class ChannelLogger(callbacks.Privmsg):
|
|||||||
else:
|
else:
|
||||||
return '%s.log' % channel
|
return '%s.log' % channel
|
||||||
|
|
||||||
|
def getLogDir(self, irc, channel):
|
||||||
|
logDir = conf.supybot.directories.log()
|
||||||
|
logDir = os.path.join(logDir, self.name())
|
||||||
|
if self.registryValue('directories'):
|
||||||
|
if self.registryValue('directories.network'):
|
||||||
|
logDir = os.path.join(logDir, irc.network)
|
||||||
|
if self.registryValue('directories.channel'):
|
||||||
|
logDir = os.path.join(logDir, channel)
|
||||||
|
if self.registryValue('directories.timestamp'):
|
||||||
|
format = self.registryValue('directories.timestamp.format')
|
||||||
|
timeDir =time.strtime(format)
|
||||||
|
logDir = os.path.join(logDir, timeDir)
|
||||||
|
if not os.path.exists(logDir):
|
||||||
|
os.makedirs(logDir)
|
||||||
|
return logDir
|
||||||
|
|
||||||
def checkLogNames(self):
|
def checkLogNames(self):
|
||||||
for (channel, log) in self.logs.items():
|
for (channel, log) in self.logs.items():
|
||||||
if self.registryValue('rotateLogs', channel):
|
if self.registryValue('rotateLogs', channel):
|
||||||
@ -160,17 +181,14 @@ class ChannelLogger(callbacks.Privmsg):
|
|||||||
log.close()
|
log.close()
|
||||||
del self.logs[channel]
|
del self.logs[channel]
|
||||||
|
|
||||||
def getLog(self, channel):
|
def getLog(self, irc, channel):
|
||||||
self.checkLogNames()
|
self.checkLogNames()
|
||||||
if channel in self.logs:
|
if channel in self.logs:
|
||||||
return self.logs[channel]
|
return self.logs[channel]
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
logDir = conf.supybot.directories.log()
|
|
||||||
logDir = os.path.join(logDir, self.name())
|
|
||||||
if not os.path.exists(logDir):
|
|
||||||
os.makedirs(logDir)
|
|
||||||
name = self.getLogName(channel)
|
name = self.getLogName(channel)
|
||||||
|
logDir = self.getLogDir(irc, channel)
|
||||||
log = file(os.path.join(logDir, name), 'a')
|
log = file(os.path.join(logDir, name), 'a')
|
||||||
self.logs[channel] = log
|
self.logs[channel] = log
|
||||||
return log
|
return log
|
||||||
@ -185,13 +203,11 @@ class ChannelLogger(callbacks.Privmsg):
|
|||||||
log.write(' ')
|
log.write(' ')
|
||||||
|
|
||||||
def normalizeChannel(self, irc, channel):
|
def normalizeChannel(self, irc, channel):
|
||||||
if self.registryValue('includeNetworkName', channel):
|
|
||||||
channel = '%s@%s' % (channel, irc.network)
|
|
||||||
return ircutils.toLower(channel)
|
return ircutils.toLower(channel)
|
||||||
|
|
||||||
def doLog(self, irc, channel, s):
|
def doLog(self, irc, channel, s):
|
||||||
channel = self.normalizeChannel(irc, channel)
|
channel = self.normalizeChannel(irc, channel)
|
||||||
log = self.getLog(channel)
|
log = self.getLog(irc, channel)
|
||||||
if self.registryValue('timestamp', channel):
|
if self.registryValue('timestamp', channel):
|
||||||
self.timestamp(log)
|
self.timestamp(log)
|
||||||
if self.registryValue('stripFormatting', channel):
|
if self.registryValue('stripFormatting', channel):
|
||||||
|
Loading…
Reference in New Issue
Block a user