- Improved logging in server

- Added logtarget option

git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@263 a942ae1a-1317-0410-a47c-b1dcaea8d605
0.x
Cyril Jaquier 2006-08-06 21:24:06 +00:00
parent 3d73f45531
commit f248c460f2
4 changed files with 39 additions and 2 deletions

View File

@ -39,7 +39,8 @@ class Fail2banReader(ConfigReader):
ConfigReader.read(self, "fail2ban")
def getOptions(self):
opts = [["int", "loglevel", 1]]
opts = [["int", "loglevel", 1],
["string", "logtarget", "STDERR"]]
self.opts = ConfigReader.getOptions(self, "Definition", opts)
def convert(self):
@ -47,5 +48,7 @@ class Fail2banReader(ConfigReader):
for opt in self.opts:
if opt == "loglevel":
stream.append(["set", "loglevel", self.opts[opt]])
elif opt == "logtarget":
stream.append(["set", "logtarget", self.opts[opt]])
return stream

View File

@ -9,3 +9,4 @@
loglevel = 3
logtarget = /var/log/fail2ban.log

View File

@ -26,7 +26,7 @@ __license__ = "GPL"
from jail import Jail
from transmitter import Transmitter
import locale, logging
import locale, logging, sys
# Gets the instance of the logger.
logSys = logging.getLogger("fail2ban.server")
@ -37,8 +37,10 @@ class Server:
self.jails = dict()
self.transm = Transmitter(self)
self.logLevel = 3
self.logTarget = "STDERR"
# Set logging level
self.setLogLevel(self.logLevel)
self.setLogTarget(self.logTarget)
def start(self):
# Start the communication
@ -322,6 +324,33 @@ class Server:
def getLogLevel(self):
return self.logLevel
def setLogTarget(self, target):
# Remove previous handler
logging.getLogger("fail2ban").handlers = []
self.logTarget = target
if target == "SYSLOG":
logSys.error("Not yet implemented")
return False
elif target == "STDERR":
hdlr = logging.StreamHandler(sys.stderr)
else:
# Target should be a file
try:
open(target, "a")
hdlr = logging.FileHandler(target)
except IOError:
logSys.error("Unable to log to " + target)
return False
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-16s: %(levelname)-6s %(message)s')
# tell the handler to use this format
hdlr.setFormatter(formatter)
logging.getLogger("fail2ban").addHandler(hdlr)
return True
def getLogTarget(self):
return self.logTarget
class ServerUnknownJail(Exception):
pass

View File

@ -103,6 +103,10 @@ class Transmitter:
value = int(action[1])
self.server.setLogLevel(value)
return self.server.getLogLevel()
elif name == "logtarget":
value = action[1]
self.server.setLogTarget(value)
return self.server.getLogTarget()
# Jail
elif action[1] == "idle":
if action[2] == "on":