The config file[loggers]keys=root[handlers]keys=consoleHandler,fileHandler[formatters]keys=myFormatter[logger_root]level=DEBUGhandlers=consoleHandler,fileHandler[handler_consoleHandler]class=StreamHandlerlevel=INFOformatter=myFormatterargs=(sys.stdout,)[handler_fileHandler]class=handlers.RotatingFileHandlerlevel=DEBUGformatter=myFormatterargs=('logs/handling_error_sample.log', 'a', 4096, 2)[formatter_myFormatter]format=%(asctime)s - %(name)s - %(levelname)s - %(message)sdatefmt=%m-%d %H:%MThe Python script#!/usr/bin/python# -*- coding: utf-8 -*-'''Acessa um recurso que gere uma Exception, faz o tratamento gravando o log do erro.'''__author__ = 'Marco Antonio Almeida'__version__ = '0.0.1'__date__ = '27 out 2013'import tracebackimport exceptionsimport xml.etree.ElementTree as et# Inicializando componente de log.import loggingimport logging.configimport logging.handlerslogging.config.fileConfig('handling_error_sample.conf')logger = logging.getLogger()#def read_file(fn): '''Retorna todo o conteudo de um arquivo. Problemas com acesso ou leitura do arquivo vai gerar erros''' retorno = None with open(fn) as f: retorno = f.read() return retorno#end defdef obter_resposta_do_servidor(): '''Obtem o XML e retorna um "xml.etree.ElementTree.Element" com o resultado.''' # Lendo o arquivo do disco file = '/etc/passwd' logger.debug('Lendo o arquivo ' + file) logger.info('Lendo o arquivo ' + file) response = read_file(file) logger.debug(response) # Tentanto converter o arquivo em XML logger.debug('Gerando um erro ao tentar transformar em XML') logger.info('Gerando um erro ao tentar transformar em XML') root = et.fromstring(response) logger.debug(type(root)) return root#end defdef aguardar_fim_processo(): '''Faz um loop obtendo o resultado do servidor, aguardando que o status mude de "busy" para o de concluido.''' logger.info('Testes com tratamento de erro.') try: logger.info('Gerando erro ao obter dados do servidor') xml = obter_resposta_do_servidor() logger.info('Ops, algo deveria ter dado errado.') raise Exception('Erro em aguardar_fim_processo()', 'Deveria ter ocorrido um erro') except Exception as e: logger.info(type(e)) logger.debug(type(e)) logger.info(e.args) logger.debug(e.args) logger.info('Detalhes do erro:') logger.debug('Detalhes do erro:') trace = traceback.format_exc() logger.info('Erro aguardando resposta via traceback - detalhes do erro:\n' + trace) logger.debug('Erro aguardando resposta via traceback - detalhes do erro:\n' + trace) logger.info('Erro aguardando resposta via exc_info - detalhes do erro:\n', exc_info=True) logger.debug('Erro aguardando resposta via exc_info - detalhes do erro:\n', exc_info=True) raise e else: raise Exception('Erro em aguardar_fim_processo()', 'Deveria ter ocorrido um erro')#end defdef main(): '''Executa as operacoes necessarias para leitura de xml''' logger.info('Iniciando processo.') try: # Faz a leitura de um XML result = aguardar_fim_processo() logger.info(result) except Exception as e: logger.debug("Erro aguardando resposta, traceback =", exc_info=True)#end def# Executando a aplicacao.if __name__ == '__main__': main()#end def #!/bin/sh -e # Apache Solr server service start, stop, restart script# /etc/rc.d/solrd# # processname: solrd# pidfile: /var/run/solrd.pid# description: Apache Solr server script daemon# @author Marco Almeida (marcominas). /etc/rc.subrname=solrdrcvar=solrd_enablepid_file="/var/run/${name}.pid"solr_path="/usr/share/solr"solr_cmd="/usr/local/bin/java -Xmx256m -DSTOP.PORT=8064 -DSTOP.KEY=stopKey -jar start.jar"cmd_value="1"start_cmd="${name}_start"stop_cmd="${name}_stop"restart_cmd="${name}_restart"load_rc_config $name: ${solrd_enable:=no} : ${solrd_msg_stop="Stopping Apache Solr daemon..."}: ${solrd_msg_start="Starting Apache Solr daemon..."}: ${solrd_msg_started="Apache Solr daemon already started..."}: ${solrd_msg_not_started="Apache Solr daemon not started..."}: ${solrd_msg_restart="Restarting..."}# this will be executed on a "service solrd start" callsolrd_start(){ if [ -f $pid_file ] then echo "$solrd_msg_started" else echo "$solrd_msg_start" cd $solr_path $solr_cmd 1>/dev/null 2>/dev/null & cmd_value=$? [ "$cmd_value" = "0" ] && touch $pid_file sleep 3 fi}# this will be executed on a "service solrd stop" callsolrd_stop(){ if [ -f $pid_file ] then echo "$solrd_msg_stop" cd $solr_path $solr_cmd --stop 2>/dev/null cmd_value=$? [ "$cmd_value" = "0" ] && rm -f $pid_file sleep 3 else echo "$solrd_msg_not_started" fi}# this will be executed on a "service solrd restart" callsolrd_restart(){ echo "$solrd_msg_restart" $0 stop sleep 2 $0 start}run_rc_command "$1" Sample of read a XML and find data no XML elements.The XML sample file 0 0 data-config.xml uuid status idle 5 5916 0 2013-10-22 13:23:29 Indexing completed. Added/Updated: 5916 documents. Deleted 0 documents. 2013-10-22 13:23:34 5916 0:0:25.461 This response format is