Pārlūkot izejas kodu

- Added RotatingFileHandler to log configuration.

- switched most occurrences of "print" to "logger"
pull/147/head
Johannes pirms 8 gadiem
vecāks
revīzija
b3145fad01
10 mainītis faili ar 117 papildinājumiem un 52 dzēšanām
  1. +19
    -0
      config/logger.yaml
  2. +5
    -1
      modules/action/__init__.py
  3. +17
    -8
      modules/base_plugins/actor.py
  4. +9
    -5
      modules/base_plugins/sensor.py
  5. +9
    -4
      modules/base_plugins/steps.py
  6. +6
    -2
      modules/core/baseapi.py
  7. +15
    -9
      modules/core/basetypes.py
  8. +27
    -20
      modules/core/core.py
  9. +5
    -2
      modules/fermenter/__init__.py
  10. +5
    -1
      modules/recipe_import/kbh.py

+ 19
- 0
config/logger.yaml Parādīt failu

@@ -0,0 +1,19 @@
version: 1
formatters:
simple:
format: '%(asctime)s - %(levelname)-8s - %(name)s - %(message)s'
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
file:
class : logging.handlers.RotatingFileHandler
formatter: simple
filename: ./logs/app.log
maxBytes: 10000000
backupCount: 3
root:
level: DEBUG
handlers: [console, file]

+ 5
- 1
modules/action/__init__.py Parādīt failu

@@ -1,8 +1,12 @@
import json
import logging
from flask_classy import FlaskView, route
from modules.core.core import cbpi


class ActionView(FlaskView):
def __init__(self):
self.logger = logging.getLogger(__name__)

@route('/<action>', methods=['POST'])
def action(self, action):
@@ -15,7 +19,7 @@ class ActionView(FlaskView):
200:
description: action invoked
"""
print self.cbpi.cache["actions"]
self.logger.info(self.cbpi.cache["actions"])
self.cbpi.cache["actions"][action]["function"](self.cbpi)

return ('',204)


+ 17
- 8
modules/base_plugins/actor.py Parādīt failu

@@ -1,14 +1,17 @@
import logging
from modules.core.baseapi import Buzzer
from modules.core.basetypes import Actor, KettleController, FermenterController
from modules.core.core import cbpi


@cbpi.addon.actor.type("Dummy Actor")
class Dummy(Actor):

def __init__(self):
self.logger = logging.getLogger(__name__)

@cbpi.addon.actor.action("WOHOO")
def myaction(self):
print "HALLO!!!"
self.logger.debug("HALLO!!!")

def on(self, power=100):
'''
@@ -16,35 +19,41 @@ class Dummy(Actor):
:param power: int value between 0 - 100
:return:
'''
print "ON"
self.logger.info("ON")

def off(self):
print "OFF"
self.logger.info("OFF")



@cbpi.addon.kettle.controller()
class MyController(KettleController):
def __init__(self):
self.logger = logging.getLogger(__name__)

def run(self):
while self.is_running():
print "HALLO"
self.logger.debug("HALLO")
self.sleep(1)

@cbpi.addon.fermenter.controller()
class MyController2(FermenterController):

def __init__(self):
self.logger = logging.getLogger(__name__)

def run(self):
while self.is_running():
print "HALLO"
self.logger.debug("HALLO")
self.sleep(1)

@cbpi.addon.core.initializer(order=200)
def init(cbpi):

class MyBuzzer(Buzzer):
def __init__(self):
self.logger = logging.getLogger(__name__)

def beep(self):
print "BEEEEEEP"
self.logger.info("BEEEEEEP")

cbpi.buzzer = MyBuzzer()

+ 9
- 5
modules/base_plugins/sensor.py Parādīt failu

@@ -3,10 +3,12 @@ import os

from os.path import join

from modules.core.basetypes import Actor, Sensor
from modules.core.basetypes import Sensor
from modules.core.core import cbpi
from modules.core.proptypes import Property
import random

import logging

print "INit SENSOR"
@cbpi.addon.sensor.type("Dummy Sensor")
class Dummy(Sensor):
@@ -14,8 +16,10 @@ class Dummy(Sensor):
text = Property.Text(label="Text", required=True, description="This is a parameter", configurable=True)
p = Property.Select(label="hallo",options=[1,2,3])

def init(self):
def __init__(self):
self.logger = logging.getLogger(__name__)

def init(self):
if self.api.get_config_parameter("unit","C") == "C":
self.unit = "°C"
else:
@@ -23,8 +27,8 @@ class Dummy(Sensor):

@cbpi.addon.sensor.action("WOHOO")
def myaction(self):
print self.text
print "SENSOR ACTION HALLO!!!"
self.logger.info(self.text)
self.logger.debug("SENSOR ACTION HALLO!!!")

def execute(self):
while True:


+ 9
- 4
modules/base_plugins/steps.py Parādīt failu

@@ -1,3 +1,5 @@
import logging

from modules.core.basetypes import Step
from modules.core.core import cbpi
from modules.core.proptypes import Property
@@ -6,20 +8,23 @@ from modules.core.proptypes import Property
@cbpi.addon.step.type("Dummy Step")
class Dummy(Step):

def __init__(self):
self.logger = logging.getLogger(__name__)


@cbpi.addon.step.action("WOHOO")
def myaction(self):
self.stop_timer()
self.start_timer(10)
print "HALLO"
self.logger.debug("HALLO")

text = Property.Text(label="Text", configurable=True, description="WOHOOO")
time = Property.Text(label="Text", configurable=True, description="WOHOOO")

def execute(self):
#print self.text
self.logger.debug(self.text)
pass

def reset(self):
print "RESET STEP!!!"
self.stop_timer()
self.logger.info("RESET STEP!!!")
self.stop_timer()

+ 6
- 2
modules/core/baseapi.py Parādīt failu

@@ -1,3 +1,5 @@
import logging
from proptypes import *
class BaseAPI(object):
@@ -148,6 +150,8 @@ class CoreAPI(BaseAPI):
key = "core"
def __init__(self, cbpi):
self.logger = logging.getLogger(__name__)
self.cbpi = cbpi
self.cbpi.cache["actions"] = {}
self.cbpi.cache["init"] = []
@@ -160,7 +164,7 @@ class CoreAPI(BaseAPI):
self.cbpi.cache["init"] = sorted(self.cbpi.cache["init"], key=lambda k: k['order'])
for value in self.cbpi.cache.get("init"):
print value
self.logger.debug(value)
value["function"](self.cbpi)
def job(interval, method):
@@ -168,7 +172,7 @@ class CoreAPI(BaseAPI):
try:
method(self.cbpi)
except Exception as e:
print e
self.logger.debug(e)
self.cbpi._socketio.sleep(interval)
for value in self.cbpi.cache.get("background"):


+ 15
- 9
modules/core/basetypes.py Parādīt failu

@@ -1,3 +1,5 @@
import logging
from modules.core.proptypes import Property
import time
@@ -13,6 +15,8 @@ class Base(object):
self.__dirty = False
class Actor(Base):
def __init__(self):
self.logger = logging.getLogger(__name__)
@classmethod
def init_global(cls):
@@ -26,15 +30,15 @@ class Actor(Base):
pass
def on(self, power=100):
print "SWITCH ON"
self.logger.info("SWITCH ON")
pass
def off(self):
print "SWITCH OFF"
self.logger.info("SWITCH OFF")
pass
def power(self, power):
print "SET POWER", power
self.logger.info("SET POWER TO [%s]", power)
pass
def state(self):
@@ -42,6 +46,8 @@ class Actor(Base):
class Sensor(Base):
def __init__(self):
self.logger = logging.getLogger(__name__)
unit = ""
@@ -65,7 +71,7 @@ class Sensor(Base):
self.cbpi.ws_emit("SENSOR_UPDATE", self.cbpi.cache["sensors"][self.id])
def execute(self):
print "EXECUTE"
self.logger.info("EXECUTE")
pass
@@ -229,7 +235,6 @@ class Timer(object):
class Step(Base, Timer):
@classmethod
def init_global(cls):
pass
@@ -251,12 +256,13 @@ class Step(Base, Timer):
pass
def execute(self):
print "-------------"
print "Step Info"
print "Kettle ID: %s" % self.kettle_id
print "ID: %s" % self.id
self.logger.info("-------------")
self.logger.info("Step Info")
self.logger.info("Kettle ID: %s" % self.kettle_id)
self.logger.info("ID: %s" % self.id)
def __init__(self, *args, **kwds):
self.logger = logging.getLogger(__name__)
for a in kwds:
super(Step, self).__setattr__(a, kwds.get(a))


+ 27
- 20
modules/core/core.py Parādīt failu

@@ -1,8 +1,10 @@
import json
import logging
import logging.config
import os
import sqlite3
import uuid
import yaml
from datetime import datetime
from functools import wraps, update_wrapper
from importlib import import_module
@@ -62,6 +64,8 @@ class ActorCore(object):
key = "actor_types"
def __init__(self, cbpi):
self.logger = logging.getLogger(__name__)
self.cbpi = cbpi
self.cbpi.cache["actors"] = {}
self.cbpi.cache[self.key] = {}
@@ -72,7 +76,7 @@ class ActorCore(object):
def init_one(self, id):
try:
print "INIT ONE ACTOR", id
self.logger.info("INIT ONE ACTOR [%s]", id)
actor = self.cbpi.cache["actors"][id]
clazz = self.cbpi.cache[self.key].get(actor.type)["class"]
cfg = actor.config.copy()
@@ -82,8 +86,7 @@ class ActorCore(object):
actor.power = 100
self.cbpi.emit("INIT_ACTOR", id=id)
except Exception as e:
print e
self.cbpi._app.logger.error(e)
self.logger.error(e)
def stop_one(self, id):
self.cbpi.cache["actors"][id]["instance"].stop()
@@ -99,7 +102,7 @@ class ActorCore(object):
self.cbpi.emit("SWITCH_ACTOR_ON", id=id, power=power)
return True
except Exception as e:
print e
self.logger.error(e)
return False
def off(self, id):
@@ -111,7 +114,7 @@ class ActorCore(object):
self.cbpi.emit("SWITCH_ACTOR_OFF", id=id)
return True
except Exception as e:
print e
self.logger.error(e)
return False
def toggle(self, id):
@@ -129,7 +132,7 @@ class ActorCore(object):
self.cbpi.emit("SWITCH_ACTOR_POWER_CHANGE", id=id, power=power)
return True
except Exception as e:
print e
self.logger.error(e)
return False
def action(self, id, method):
@@ -147,14 +150,16 @@ class ActorCore(object):
job = self.cbpi._socketio.start_background_task(target=toggle, id=id, seconds=seconds)
def get_state(self, actor_id):
print actor_id
print self.cbpi
self.logger.debug(actor_id)
self.logger.debug(self.cbpi)
class SensorCore(object):
key = "sensor_types"
def __init__(self, cbpi):
self.logger = logging.getLogger(__name__)
self.cbpi = cbpi
self.cbpi.cache["sensors"] = {}
self.cbpi.cache["sensor_instances"] = {}
@@ -172,7 +177,7 @@ class SensorCore(object):
cfg.update(dict(cbpi=self.cbpi, id=id))
self.cbpi.cache["sensors"][id].instance = clazz(**cfg)
self.cbpi.cache["sensors"][id].instance.init()
print self.cbpi.cache["sensors"][id].instance
self.logger.debug(self.cbpi.cache["sensors"][id].instance)
self.cbpi.emit("INIT_SENSOR", id=id)
def job(obj):
@@ -182,11 +187,10 @@ class SensorCore(object):
self.cbpi.emit("INIT_SENSOR", id=id)
except Exception as e:
print "ERROR"
self.cbpi._app.logger.error(e)
self.logger.error(e)
def stop_one(self, id):
print "OBJ", self.cbpi.cache["sensors"][id]
self.logger.info("OBJ [%s]", self.cbpi.cache["sensors"][id])
self.cbpi.cache["sensors"][id].instance.stop()
self.cbpi.emit("STOP_SENSOR", id=id)
@@ -197,8 +201,8 @@ class SensorCore(object):
return None
def get_state(self, actor_id):
print actor_id
print self.cbpi
self.logger.info("Get state actor id [%s]", actor_id)
self.logger.debug(self.cbpi)
def write_log(self, id, value, prefix="sensor"):
filename = "./logs/%s_%s.log" % (prefix, str(id))
@@ -277,8 +281,11 @@ class CraftBeerPI(object):
eventbus = {}
def __init__(self):
FORMAT = '%(asctime)-15s - %(levelname)s - %(message)s'
logging.basicConfig(filename='./logs/app.log', level=logging.INFO, format=FORMAT)
#FORMAT = '%(asctime)-15s - %(levelname)s - %(message)s'
#logging.basicConfig(filename='./logs/app.log', level=logging.INFO, format=FORMAT)
logging.config.dictConfig(yaml.load(open('./config/logger.yaml', 'r')))
self.logger = logging.getLogger(__name__)
self.cache["messages"] = []
self.cache["version"] = "3.1"
self.modules = {}
@@ -324,7 +331,7 @@ class CraftBeerPI(object):
self._socketio.emit(key, data, namespace='/brew')
def __init_db(self, ):
print "INIT DB"
self.logger.info("INIT DB")
with self._app.app_context():
db = self.get_db()
try:
@@ -332,7 +339,7 @@ class CraftBeerPI(object):
db.cursor().executescript(f.read())
db.commit()
except Exception as e:
print e
self.logger.error(e)
pass
def nocache(self, view):
@@ -383,13 +390,13 @@ class CraftBeerPI(object):
def loadPlugins(self):
for filename in os.listdir("./modules/plugins"):
print filename
self.logger.info("Loading plugin [%s]", filename)
if os.path.isdir("./modules/plugins/" + filename) is False:
continue
try:
self.modules[filename] = import_module("modules.plugins.%s" % (filename))
except Exception as e:
print e
self.logger.error(e)
self.notify("Failed to load plugin %s " % filename, str(e), type="danger", timeout=None)


+ 5
- 2
modules/fermenter/__init__.py Parādīt failu

@@ -1,3 +1,4 @@
import logging
import time
from flask import request
from flask_classy import route
@@ -12,6 +13,8 @@ class FermenterView(BaseView):
model = Fermenter
cache_key = "fermenter"

def __init__(self):
self.logger = logging.getLogger(__name__)

def _post_post_callback(self, m):
m.state = False
@@ -159,7 +162,7 @@ class FermenterView(BaseView):
def toggle(self, id):
fermenter = cbpi.cache.get(self.cache_key)[id]
try:
print fermenter.state
self.logger.info("Fermenter [%s] is in state [%s]",fermenter.id, fermenter.state)
if fermenter.state is False:
# Start controller
if fermenter.logic is not None:
@@ -185,7 +188,7 @@ class FermenterView(BaseView):
cbpi.emit("FERMENTER_CONTROLLER_STOPPED", id=id)

except Exception as e:
print e
self.logger.error(e)
cbpi.notify("Toogle Fementer Controller failed", "Pleae check the %s configuration" % fermenter.name,
type="danger", timeout=None)
return ('', 500)


+ 5
- 1
modules/recipe_import/kbh.py Parādīt failu

@@ -1,3 +1,5 @@
import logging

from flask import json, request
from flask_classy import FlaskView, route
from git import Repo, Git
@@ -11,6 +13,8 @@ from modules.step import Step, StepView


class KBH(FlaskView):
def __init__(self):
self.logger = logging.getLogger(__name__)

@route('/', methods=['GET'])
def get(self):
@@ -39,7 +43,7 @@ class KBH(FlaskView):
result.append({"id": row[0], "name": row[1], "brewed": row[2]})
return json.dumps(result)
except Exception as e:
print e
self.logger.error(e)
self.api.notify(headline="Failed to load KHB database", message="ERROR", type="danger")
return ('', 500)
finally:


Notiek ielāde…
Atcelt
Saglabāt