mirror of https://github.com/fail2ban/fail2ban
- Improved logging in server
- Added logtarget option git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@263 a942ae1a-1317-0410-a47c-b1dcaea8d6050.x
parent
3d73f45531
commit
f248c460f2
|
@ -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
|
||||
|
|
@ -9,3 +9,4 @@
|
|||
|
||||
loglevel = 3
|
||||
|
||||
logtarget = /var/log/fail2ban.log
|
||||
|
|
|
@ -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
|
|
@ -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":
|
||||
|
|
Loading…
Reference in New Issue