cherrypy: python, как создавать отдельные файлы журналов запросов на каждый день с помощью ротатора журналов

я хочу создать отдельный файл журнала для доступа и ошибок в cherrypy. я прочитал http://docs.cherrypy.org/dev/refman/_cplogging.html , но я не могу написать код для реализации ведения журнала.

я прочитал дополнительную ссылку Python Cherrypy Access Log Rotation.

пожалуйста, предоставьте код и задокументируйте, как реализовать ведение журнала в cherrypy, пожалуйста, помогите мне, предоставив пример кода

у меня есть один файл hello.py

импортировать вишневый

class HelloWorld: def index(self): return "Привет, мир!" index.exposed = Истина

@cherrypy.expose
def link(self):
    #print HelloWorld.c

    #print self.j
    return "link"

@cherrypy.expose
def link2(self):
    return "link2"

if name == 'main' : cherrypy.quickstart(HelloWorld())

какие изменения необходимы для реализации ведения журнала, пожалуйста, предоставьте код..


person Bhartendu Bharti    schedule 23.09.2013    source источник


Ответы (1)


Попробуй это...

import logging
from cherrypy import _cplogging
from logging import handlers
import cherrypy

class HelloWorld:
    @cherrypy.expose 
    def index(self):
        return "Hello world!" 

    @cherrypy.expose
    def link(self):
        #print HelloWorld.c

        #print self.j
        return "link"

    @cherrypy.expose
    def link2(self):
        return "link2"

if name == 'main' :
    applicationLogFileHandler = handlers.TimedRotatingFileHandler('rot_access_file', "midnight", 1)
    applicationLogFileHandler.setLevel(logging.DEBUG)
    applicationLogFileHandler.setFormatter(_cplogging.logfmt)
    cherrypy.log.access_log.addHandler(applicationLogFileHandler)

    applicationLogFileHandler = handlers.TimedRotatingFileHandler('rot_error_file', "midnight", 1)
    applicationLogFileHandler.setLevel(logging.DEBUG)
    applicationLogFileHandler.setFormatter(_cplogging.logfmt)
    cherrypy.log.error_log.addHandler(applicationLogFileHandler)

    cherrypy.quickstart(HelloWorld())

Надеюсь это поможет!

person Andrew Kloos    schedule 23.09.2013
comment
предположим, что есть один файл hello.py с корневым классом и mwthods в качестве индекса, ссылки, страницы... тогда я напишу еще один файл для ведения журнала. - person Bhartendu Bharti; 23.09.2013
comment
Нет - вам не нужно писать еще один. Я обновил свой ответ вашим кодом. - person Andrew Kloos; 23.09.2013
comment
этот код работает нормально.. в соответствии с моим проектом мне нужна дополнительная модификация 1] мне нужно создать отдельные файлы журнала запросов на каждый день с помощью ротатора журналов 2] файл должен храниться в любой папке с именем src... пожалуйста, предоставьте код с требованием необходимых изменений - person Bhartendu Bharti; 23.09.2013
comment
Я понимаю. Вы хотите TimedRotatingFileHandler, я обновил свой код. - person Andrew Kloos; 24.09.2013
comment
я проверял, что он создает новый файл журнала каждый день - person Bhartendu Bharti; 24.09.2013
comment
предположим, что в любой функции есть операторы печати... например, def link(self): обработчик имеет оператор ссылки печати... когда мы вызываем этот обработчик, он печатает ссылку на экране консоли chrerrypy... теперь, если я хочу записать эти операторы печати... какие изменения мне придется внести в приведенный выше код, который вы дали. - person Bhartendu Bharti; 27.09.2013
comment
когда есть файл журнала ошибок, записывайте все операторы экрана консоли cherrypy. 1.1 500 1319 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0 записывается в файл доступа ... но я хочу, чтобы он записывался. ссылка 127.0.0.1 - - [27/Sep/2013:12:28:00] GET /link HTTP/1.1 200 4 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0 как печатается ссылка через оператор печати ссылки в def link(): - person Bhartendu Bharti; 27.09.2013