Python'daki günlüğe kaydetme amacımız için RotatingHandler
kullanmayı deniyorum. Yedekleme dosyalarını 500 olarak tuttum, bu da tahmin ettiğim maksimum 500 dosya oluşturacağımı ve ayarladığım boyutun 2000 Byte olduğunu (önerilen boyut sınırının ne olduğundan emin olmadığına).Logging.conf dosyasını kullanarak her şeyi RotatingFileHandler kullanarak bir dosyaya nasıl kaydedebilirim?
Aşağıdaki kodumu çalıştırırsam, her şeyi bir dosyaya kaydetmez. Ben bir dosyaya herşeyi giriş yapmak istiyoruz -
#!/usr/bin/python
import logging
import logging.handlers
LOG_FILENAME = 'testing.log'
# Set up a specific logger with our desired output level
my_logger = logging.getLogger('agentlogger')
# Add the log message handler to the logger
handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=2000, backupCount=100)
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
my_logger.addHandler(handler)
my_logger.debug('debug message')
my_logger.info('info message')
my_logger.warn('warn message')
my_logger.error('error message')
my_logger.critical('critical message')
# Log some messages
for i in range(10):
my_logger.error('i = %d' % i)
Bu benim testing.log
dosyada ne basılmış olur edilir - O INFO
çıktısını gelmez
2013-11-22 12:59:34,782 - agentlogger - WARNING - warn message
2013-11-22 12:59:34,782 - agentlogger - ERROR - error message
2013-11-22 12:59:34,782 - agentlogger - CRITICAL - critical message
2013-11-22 12:59:34,782 - agentlogger - ERROR - i = 0
2013-11-22 12:59:34,782 - agentlogger - ERROR - i = 1
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 2
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 3
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 4
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 5
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 6
2013-11-22 12:59:34,784 - agentlogger - ERROR - i = 7
2013-11-22 12:59:34,784 - agentlogger - ERROR - i = 8
2013-11-22 12:59:34,784 - agentlogger - ERROR - i = 9
, dosya içine DEBUG
mesajı nasılsa .. Neden çalışmadığı hakkında bir fikrin var mı?
Ayrıca, şu anda, bu python dosyasındaki her şeyi günlüğe kaydetme amacıyla tanımladım. Yukarıdakileri logging conf
dosyasında tanımlamak ve fileConfig()
işlevini kullanarak okumak istiyorum. logging.conf
dosyasında RotatingFileHandler
örneğinin nasıl kullanıldığından emin değilim?
GÜNCELLEME: - Aşağıda
olduğunu ben log.conf
dosyası ile kullanmak değiştirdiniz benim güncellenen Python kodu - aşağıda
#!/usr/bin/python
import logging
import logging.handlers
my_logger = logging.getLogger(' ')
my_logger.config.fileConfig('log.conf')
my_logger.debug('debug message')
my_logger.info('info message')
my_logger.warn('warn message')
my_logger.error('error message')
my_logger.critical('critical message')
# Log some messages
for i in range(10):
my_logger.error('i = %d' % i)
Ve is my log.conf file
-
[loggers]
keys=root
[handlers]
keys=logfile
[formatters]
keys=logfileformatter
[logger_root]
level=DEBUG
handlers=logfile
[logger_zkagentlogger]
level=DEBUG
handlers=logfile
qualname=zkagentlogger
propagate=0
[formatter_logfileformatter]
format=%(asctime)s %(name)-12s: %(levelname)s %(message)s
[handler_logfile]
class=handlers.RotatingFileHandler
level=NOTSET
args=('testing.log',2000,100)
formatter=logfileformatter
Ama ne zaman derlerse, bu benim konsolumdaki hata -
$ python logtest3.py
Traceback (most recent call last):
File "logtest3.py", line 6, in <module>
my_logger.config.fileConfig('log.conf')
AttributeError: 'Logger' object has no attribute 'config'
Burada ne yapıyorum?
Teşekkürler. Peki, her şeyi bir dosyaya kaydetmeye ayarlıyım? –
Bir projede kullandığım bir çalışma yapılandırmasından birkaç alıştırma ekledim, bu başlamanızı sağlamalı. Daha fazla logger ile tam bir örnek https://github.com/gryphius/fuglu/blob/master/fuglu/conf/logging.conf.dist – Gryphius
Yardım için teşekkürler Gryphius .. Son bir şüphe, sonra nasıl olduğumu logger'ı python kodunda mı alacaksın? Düşüncesi olan var mı? Bu ilk defa Python ile çalışıyorum, bu yüzden biraz problem yaşıyorum. –