mirror of https://git.48k.eu/ogclient
#1065 Use logging module instead of syslog
We can't use syslog if we want to execute ogClient in the Windows platform. Use the native logging library so we can attach different handlers depending on the mode ogClient is executing. Logging configuration is done via a python dict. There is a different dict for linux and windows. These dicts define the configuration of the root logger, handlers and formatters used. As of now, it is only expected to use the root logger for everything logging related. The root logger is obtained via: LOGGER = logging.getLogger() More info about handlers, formatters and loggers: https://docs.python.org/3/howto/logging.html Logging configuration is done at startup, just after parsing the json (knowing ogclient mode). If json parsing goes bad, ogclient will only print a message to stdout.more_events
parent
fd1f01d76b
commit
3dfe54968b
3
ogclient
3
ogclient
|
@ -18,6 +18,7 @@ except ImportError:
|
|||
|
||||
|
||||
from src.ogClient import *
|
||||
from src.log import configure_logging
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -36,6 +37,8 @@ def main():
|
|||
if MODE != 'windows':
|
||||
signal.signal(SIGPIPE, SIG_DFL)
|
||||
|
||||
configure_logging(MODE)
|
||||
|
||||
client = ogClient(config=CONFIG)
|
||||
client.connect()
|
||||
client.run()
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
import logging
|
||||
import logging.config
|
||||
|
||||
DEFAULT_LOGGING_LINUX = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'formatter.syslog': {
|
||||
'()': 'logging.Formatter',
|
||||
'format': 'ogClient: [{levelname}] - {message}',
|
||||
'style': '{',
|
||||
},
|
||||
'formatter.console': {
|
||||
'()': 'logging.Formatter',
|
||||
'format': '[{levelname}] - {message}',
|
||||
'style': '{',
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'console': {
|
||||
'level': 'INFO',
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'formatter.console',
|
||||
'stream': 'ext://sys.stdout',
|
||||
},
|
||||
'syslog': {
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.handlers.SysLogHandler',
|
||||
'formatter': 'formatter.syslog',
|
||||
'address': '/dev/log',
|
||||
},
|
||||
},
|
||||
'loggers': {
|
||||
'': {
|
||||
'handlers': ['syslog', 'console'],
|
||||
'level': 'DEBUG',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
DEFAULT_LOGGING_WIN = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'formatter.console': {
|
||||
'()': 'logging.Formatter',
|
||||
'format': 'ogClient: [{levelname}] - {message}',
|
||||
'style': '{',
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
'console': {
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'formatter.console',
|
||||
'stream': 'ext://sys.stdout',
|
||||
},
|
||||
},
|
||||
'loggers': {
|
||||
'': {
|
||||
'handlers': ['console'],
|
||||
'level': 'DEBUG',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
def configure_logging(mode):
|
||||
if mode == 'windows':
|
||||
DEFAULT_LOGGING = DEFAULT_LOGGING_WIN
|
||||
else:
|
||||
DEFAULT_LOGGING = DEFAULT_LOGGING_LINUX
|
||||
logging.config.dictConfig(DEFAULT_LOGGING)
|
|
@ -16,9 +16,13 @@ import sys
|
|||
import os
|
||||
import signal
|
||||
import syslog
|
||||
import logging
|
||||
from logging.handlers import SysLogHandler
|
||||
|
||||
from src.restRequest import *
|
||||
|
||||
LOGGER = logging.getLogger()
|
||||
|
||||
class ThreadState(Enum):
|
||||
IDLE = 0
|
||||
BUSY = 1
|
||||
|
@ -55,11 +59,9 @@ class restResponse():
|
|||
return self.msg
|
||||
|
||||
if response in {ogResponses.OK, ogResponses.IN_PROGRESS}:
|
||||
syslog.syslog(syslog.LOG_INFO,
|
||||
self.msg[:ogRest.LOG_LENGTH])
|
||||
LOGGER.info(self.msg[:ogRest.LOG_LENGTH])
|
||||
else:
|
||||
syslog.syslog(syslog.LOG_ERR,
|
||||
self.msg[:ogRest.LOG_LENGTH])
|
||||
LOGGER.warn(self.msg[:ogRest.LOG_LENGTH])
|
||||
|
||||
self.msg += '\r\n'
|
||||
|
||||
|
@ -274,16 +276,15 @@ class ogRest():
|
|||
method = request.get_method()
|
||||
URI = request.get_uri()
|
||||
|
||||
syslog.syslog(syslog.LOG_DEBUG, f'{method}{URI[:ogRest.LOG_LENGTH]}')
|
||||
LOGGER.debug('%s%s', method, URI[:ogRest.LOG_LENGTH])
|
||||
|
||||
if (not "stop" in URI and
|
||||
not "reboot" in URI and
|
||||
not "poweroff" in URI and
|
||||
not "probe" in URI):
|
||||
if self.state == ThreadState.BUSY:
|
||||
syslog.syslog(syslog.LOG_ERR,
|
||||
'Request has been received '
|
||||
'while ogClient is busy')
|
||||
LOGGER.warn('Request has been received '
|
||||
'while ogClient is busy')
|
||||
response = restResponse(ogResponses.SERVICE_UNAVAILABLE)
|
||||
client.send(response.get())
|
||||
return
|
||||
|
@ -300,9 +301,8 @@ class ogRest():
|
|||
elif "refresh" in URI:
|
||||
self.process_refresh(client)
|
||||
else:
|
||||
syslog.syslog(syslog.LOG_ERR,
|
||||
f'Unsupported request: '
|
||||
f'{method[:ogRest.LOG_LENGTH]}')
|
||||
LOGGER.warn('Unsupported request: %s',
|
||||
{URI[:ogRest.LOG_LENGTH]})
|
||||
response = restResponse(ogResponses.BAD_REQUEST)
|
||||
client.send(response.get())
|
||||
self.state = ThreadState.IDLE
|
||||
|
@ -326,9 +326,8 @@ class ogRest():
|
|||
elif ("image/create" in URI):
|
||||
self.process_imagecreate(client, request)
|
||||
else:
|
||||
syslog.syslog(syslog.LOG_ERR,
|
||||
f'Unsupported request: '
|
||||
f'{method[:ogRest.LOG_LENGTH]}')
|
||||
LOGGER.warn('Unsupported request: %s',
|
||||
URI[:ogRest.LOG_LENGTH])
|
||||
response = restResponse(ogResponses.BAD_REQUEST)
|
||||
client.send(response.get())
|
||||
self.state = ThreadState.IDLE
|
||||
|
|
Loading…
Reference in New Issue