as title 

I want to save my log into my database

this is my code in model folder
import logging, logging.handlers
import json

from DBSession import DBSession


class DatabaseHandler(logging.Handler):
    def emit(self, record):
        log_entry = self.format(record)
        log_data = json.loads(log_entry)
        log_message = log_data['@message']
        log_level = log_data['@level']
        log_task = log_data['@task_name']
        db.fbbot_log.insert(log_task = log_task, log_level = log_level, 
log_message = log_message)

class LogstashFormatter(logging.Formatter):
    def __init__(self, task_name=None):
        self.task_name = task_name
 
        super(LogstashFormatter, self).__init__()
 
    def format(self, record):
        data = {'@message': record.msg,
                '@level' : record.levelname
                }
 
        if self.task_name:
            data['@task_name'] = self.task_name
 
        return json.dumps(data)

def get_configured_logger(name):
    logger = logging.getLogger(name)
    if (len(logger.handlers) == 0):
        # This logger has no handlers, so we can assume it hasn't yet been 
configured
        # (Configure logger)

        handler = DatabaseHandler()
        formatter = LogstashFormatter(name)
        handler.setFormatter(formatter)
        handler.setLevel(logging.INFO)
        logger.addHandler(handler)

        # Test entry:
        logger.debug(name + ' logger created')
    else:
        # Test entry:
        logger.debug(name + ' already exists')

    return logger

# Assign application logger to a global var  
logger = get_configured_logger(request.application)

and this is my controller/default.py

def index():
    logger.error("w")
    return 0

first time it can work,
and save log into database well
but second time when I visit the page
I get the error
<type 'exceptions.ValueError'> INSERT INTO 
`fbbot_log`(`log_message`,`log_task`,`log_level`,`input_timestamp`) VALUES 
('w','fbbot','ERROR','2017-12-24 03:09:24');

here is the table
db.define_table('fbbot_log',
                Field('log_task', 'string'),
                Field('log_level', 'string'),
                Field('log_message', 'string'),
                Field('input_timestamp', 'datetime', default = 
datetime.now())
                )


web2py 2.16.1-stable
Python 2.7.12

db is MYSQL

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to