[Twisted-Python] Log rotates not as expected

Pet petshmidt at googlemail.com
Thu Jan 28 03:58:34 EST 2010


On Thu, Jan 28, 2010 at 9:46 AM, Pet <petshmidt at googlemail.com> wrote:
> On Fri, Jan 22, 2010 at 10:21 PM, Lucas Taylor <ltaylor.volks at gmail.com> wrote:
>> On 1/22/10 3:15 AM, Pet wrote:
>>> On Fri, Jan 22, 2010 at 12:13 AM, Lucas Taylor <ltaylor.volks at gmail.com> wrote:
>>>> On 1/21/10 11:17 AM, Pet wrote:
>>>>> On Thu, Jan 21, 2010 at 7:02 PM, Maarten ter Huurne
>>>>> <maarten at treewalker.org> wrote:
>>>>>> On Thursday 21 January 2010, Lucas Taylor wrote:
>>>>>>
>>>>>>> This can occur if you have multiple instances of logfile.LogFile setup
>>>>>>> to manage the same file. The default rotation is 1MB, so maybe you have
>>>>>>> another logfile.LogFile somewhere?
>>>>>> Maybe twistd's log rotation?
>>>>> Yes, may be. I start my daemon with
>>>>> /usr/bin/twistd -y mydaemon.py --logfile=/var/log/my.log
>>>>> --pidfile=/var/lock/mydaemon.pid
>>>>>
>>>>> How do I start twistd, so it doesn't produce own log file?
>>>>>
>>>>> Thanks for help!
>>>>>
>>>>> Pet
>>>>>
>>>> You can customize the application to use your logfile and observer:
>>>> http://twistedmatrix.com/documents/current/core/howto/application.html#auto6
>>>>
>>>> e.g
>>>> class MyLog(log.FileLogObserver):
>>>>    def emit(self, logEntryDict):
>>>>        log.FileLogObserver.timeFormat = '%Y-%m-%d %H:%M:%S'
>>>>        log.FileLogObserver.emit(self, logEntryDict)
>>>>
>>>> maxLogSize = 5000000
>>>> logFile = logfile.LogFile("my.log", "/var/log", rotateLength=maxLogSize,
>>>> maxRotatedFiles=50)
>>>>
>>>> application = service.Application("myapp")
>>>> application.setComponent(log.ILogObserver, MyLog(logFile).emit)
>>>
>>> Thanks for suggestion. I'll try it out as soon as I can. Currently I
>>> do it in that way:
>>>
>>> application = service.Application("MyService")
>>> myLogService = myLogService(LOG_NAME, LOG_DIR)
>>> myLogService.setServiceParent(application)
>>>
>>>
>>> what is the difference between creating service and setting
>>> setServiceParent and setComponent?
>>>
>>> Pet
>>>
>> http://twistedmatrix.com/documents/current/core/howto/application.html
>>
>> The important aspect is the setComponent api. This is the part that lets
>> you override the default logging behavior of twistd. It has nothing to
>> do with the services that you register with the application using
>> setServiceParent.
>>
>> If your MyLogService only does what you originally posted, you probably
>> don't need all of that machinery. Using twistd will take care of
>> starting and stopping logging for you.
>>
>> But, if you really want to use your service (say you want to force
>> rotation on a restart), then you can do so. You just need to set the
>> ILogObserver component on the application using your observer's emit
>> function.
>>
>> e.g
>>
>> application = service.Application("MyService")
>> myLogService = myLogService(LOG_NAME, LOG_DIR)
>> myLogService.setServiceParent(application)
>> application.setComponent(log.ILogObserver, myLogService.loclog.emit)
>>
>> Note that this won't work with your original MyLogService implementation
>> without some reorganization (move logfile and loclog creation up to
>> __init__)
>>
>
> Hi,
>
> I'm getting an error while starting my service:
>
> Failed to load application: 'module' object has no attribute 'ILogObserver'
>
> I've imported log with
>
> from twisted.python import log
>
>
> Have no idea what is wrong...

Ok, there is no ILogObserver in log module.
I've Twisted 8.1.0 installed.

>
>
> Pet
>
>
>>
>> _______________________________________________
>> Twisted-Python mailing list
>> Twisted-Python at twistedmatrix.com
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>>
>



More information about the Twisted-Python mailing list