Issue with logging.config
Joe Hughes
jwhughes at hughesconcepts.com
Thu Jul 8 11:00:49 EDT 2010
Hi Python Help:
I'm doing some work with logging.config and I'm running into an interesting situation. I've run this by python-help, but that didn't help so I thought I would send to the list. Here is the config file
[loggers]
keys=root,log,syslog
[handlers]
keys=console,log,syslog
[formatters]
keys=rootFormat,logFormat,syslogFormat
[logger_root]
level=DEBUG
handlers=console
[logger_log]
level=DEBUG
handlers=log
qualname=log
[logger_syslog]
level=DEBUG
handlers=syslog
qualname=syslog
[handler_console]
class=StreamHandler
level=DEBUG
formatter=rootFormat
args=(sys.stdout,)
[handler_log]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=logFormat
args=('E:\local\Logs\syslog_interface.txt', 'a', 10000000, 10)
propagate=0
[handler_syslog]
class=handlers.SysLogHandler
level=DEBUG
formatter=syslogFormat
host=141.232.41.205
port=handlers.SYSLOG_UDP_PORT
facility=LOG_LOCAL0
args=(('141.232.41.205',handlers.SYSLOG_UDP_PORT),handlers.SysLogHandler.LOG_LOCAL0)
[formatter_rootFormat]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
[formatter_logFormat]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
[formatter_syslogFormat]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
and the python code
########################################################################
# Imports
########################################################################
import logging
import logging.config
import os
import re
from threading import Thread
########################################################################
# Constants
########################################################################
CONFIG_FILENAME = 'E:\local\Config\syslog_interface.conf'
MCU_LIST_FILENAME = 'E:\local\Scada_Devices\mcu.txt'
########################################################################
# Classes
########################################################################
########
# PingIt
########
class PingIt(Thread):
def __init__(self, mcuIP):
Thread.__init__(self)
self.ip = mcuIP
self.status = -1
def run(self):
pinging = os.popen("ping -n 2 " + self.ip, 'r')
while 1:
line = pinging.readline()
if not line:
break
gotResponse = re.findall(PingIt.lifeline, line)
if gotResponse:
self.status = int(gotResponse[0])
########################################################################
# Main Routine
########################################################################
#
# Get the logger configuration information
#
logging.config.fileConfig(CONFIG_FILENAME)
#
# Check if running from command line and create logger
#
if os.environ.get('PROMPT'):
#
# create logger for output to stdout
#
logger = logging.getLogger('root')
else:
#
# create logger for output to logfile
#
logger = logging.getLogger('log')
#
# Create logger for syslog output
#
syslog = logging.getLogger('syslog')
#
# Declare variables
#
PingIt.lifeline = re.compile(r"Received = (\d)")
mcu_dict = {}
ping_list = []
status = ("Not responding", "Responded to only 1 ping of 2", "Alive")
#
# Open the MCU file
#
mcu_file = open(MCU_LIST_FILENAME, 'r')
#
# Loop through the contents of the MCU file and ping the IPs
#
for mcu in mcu_file:
#
# mcu file contents example
# 192.168.97.227 MCU_HMSTD
#
# mcu_info[0] = MCU IP Address
# mcu_info[1] = MCU Name
#
mcu_info = mcu.split()
mcu_dict[mcu_info[0]] = mcu_info[1]
current = PingIt(mcu_info[0])
logger.info("Pinging " + mcu_info[1])
ping_list.append(current)
current.start()
#
# Loop through ping list and print the response
#
for pinged in ping_list:
pinged.join()
logger.info("Status - " + mcu_dict[pinged.ip] + " is " + status[pinged.status])
syslog.info("Status - " + mcu_dict[pinged.ip] + " is " + status[pinged.status])
This is the output from the code
2010-07-06 14:43:58,280 - log - INFO - Status - netboss2 is Not responding
msg = <134>2010-07-06 14:43:58,312 - syslog - INFO - Status - netboss2 is Not responding
address = ('141.232.41.205', 514)
Traceback (most recent call last):
File "C:\Python31\lib\logging\handlers.py", line 786, in emit
self.socket.sendto(msg, self.address)
TypeError: sendto() takes exactly 3 arguments (2 given)
2010-07-06 14:43:58,312 - syslog - INFO - Status - netboss2 is Not responding
This is the handlers.py code from the library. I added the print statement to figure out why it is asking for three args but only getting two.
Line 777 of handlers.py
try:
if self.unixsocket:
try:
self.socket.send(msg)
except socket.error:
self._connect_unixsocket(self.address)
self.socket.send(msg)
else:
print('msg = ', msg, '\naddress = ', self.address)
self.socket.sendto(msg, self.address)
except (KeyboardInterrupt, SystemExit):
raise
except:
self.handleError(record)
line 790 of handlers.py
This is Python/Idle 3.1.2 on Windows 2003 Server. If anyone has an idea about why this happening I would appreciate knowing what the issue is.
Thanks,
Joe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100708/7ea76928/attachment.html>
More information about the Python-list
mailing list