2012-11-07 5 views
2

정보를 가져와 내 파이썬 모듈에서 사용하려고하는 로그 파일 (log4j xml-ish 형식)이 있습니다. 이 파일을 XML처럼 처리 할 수 ​​있습니까? 내 직감은 나에게 말하고있다 ... 그렇지 않다면, 데이터를 파싱하는 가장 좋은 방법은 무엇인가? 아래는 로그 파일의 섹션입니다. 이 파일에는 표준 doctype이나 버전 헤더가 없으므로 "xml-ish"라고했습니다.Python에서 log4j 구문 분석

<log4j:event 
logger="com.hp.cp.elk.impl.subscriptions.AsyncSimpleSubscriptionManager" 
timestamp="1352320517430" level="DEBUG" thread="Thread-77"> 
<log4j:message><![CDATA[Broadcasting signals to subscribers...]]></log4j:message> 
</log4j:event> 

<log4j:event logger="com.hp.cp.jdf.idp.queue.IDPJobProgressMonitor" 
timestamp="1352320517430" level="DEBUG" thread="IDPJobProgressMonitorThread"> 
<log4j:message><![CDATA[[JDFQueueEntry[ --> JDFAutoQueueEntry[ --> JDFElement[ 
--> <?xml version="1.0" encoding="UTF-8"?><QueueEntry 
xmlns="http://www.CIP4.org/JDFSchema_1_1" 
DescriptiveName="H44E61-6.pdf" DeviceID="HPPRO1-SM1" 
EndTime="2012-11-07T10:58:18-08:00" JobID="Default" Priority="50" 
QueueEntryID="d5fbbe98a1194e0da573b51a0c8040fb" Status="Completed" 
SubmissionTime="2012-11-06T16:35:06-08:00"> <Comment AgentName="CIP4 JDF Writer 
Java" AgentVersion="1.4a BLD 63" ID="c_121106_163506894_000804" 
Name="JobSpec">WBG_4C_Flat_21up_BusCards_Duplex</Comment> 
</QueueEntry> 
] ] ]] queue entries changed.]]></log4j:message> 
</log4j:event> 

<log4j:event logger="com.hp.cp.jdf.idp.queue.IDPJobProgressMonitor" 
timestamp="1352320517430" level="DEBUG" thread="IDPJobProgressMonitorThread"> 
<log4j:message><![CDATA[no active queue entries changed.]]></log4j:message> 
</log4j:event> 

지저분한 코드로 불편을 끼쳐 드려 죄송합니다. 형식화에 대한 아이디어를 얻으려고합니다. 어쨌든, 현재 나는 가치를 끌어 내려고 노력 중입니다. QueueEntryID="d5fbbe98a1194e0da573b51a0c8040fb" 제안이 있습니까? 고맙습니다!

답변

3

DOM 또는 SAX와 같은 표준 XML 도구를 사용하여이를 구문 분석 할 수 있다고 상상합니다. 그렇지 않으면 re 또는 htmllib으로 재미있게 보내십시오.

+0

그게 내가 듣고 싶었던거야! DOM은 이미 내 고향입니다. 그래서 나는 그 장면을 포기하고 내가 끌어낼 수있는 것을 봅니다. –

관련 문제