You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Thorsten Scherler (JIRA)" <ji...@apache.org> on 2013/02/20 19:13:12 UTC

[jira] [Closed] (COCOON3-121) Create a generic generator that creates a root elemement and wraps the destination stream into it

     [ https://issues.apache.org/jira/browse/COCOON3-121?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thorsten Scherler closed COCOON3-121.
-------------------------------------

    Resolution: Fixed

Committed revision 1448335.

                
> Create a generic generator that creates a root elemement and wraps the destination stream into it
> -------------------------------------------------------------------------------------------------
>
>                 Key: COCOON3-121
>                 URL: https://issues.apache.org/jira/browse/COCOON3-121
>             Project: Cocoon 3
>          Issue Type: Bug
>          Components: cocoon-optional
>    Affects Versions: 3.0.0-beta-1
>            Reporter: Thorsten Scherler
>            Assignee: Thorsten Scherler
>             Fix For: 3.0.0-beta-1
>
>
> If you use something like ch.qos.logback.classic.log4j.XMLLayout you can create xml based log files. However the problem is that it does not add root element making the resulting file not well-formed. 
> You can activate the logging in your logback.xml like 
>    <appender name="FAILS" class="ch.qos.logback.core.FileAppender">
>         <file>${crawler.log.error}</file>
>         <append>false</append>
>         <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
>           <layout class="ch.qos.logback.classic.log4j.XMLLayout">
>             <locationInfo>true</locationInfo>
>           </layout>
>         </encoder>
>     </appender>
> The implemented solution has the following configuration in spring:
>   <bean name="generator:log4j" class="org.apache.cocoon.optional.pipeline.components.sax.generator.AddRootElementGenerator" scope="prototype">
>     <property name="encoding" value="UTF-8"/>
>     <property name="localName" value="events"/>
>     <property name="prefix" value="log4j"/>
>     <property name="namespace" value="http://jakarta.apache.org/log4j/"/>
>   </bean>
> and later parse the file that the appender gives like:
> <map:pipeline>
>       <map:match pattern="errorLogs">
>         <map:generate src="${crawler.log.error}" type="log4j"/>
>         <map:serialize type="xml" />
>       </map:match>
>     </map:pipeline>
> which will result in something like:
> <?xml version="1.0" encoding="UTF-8"?>
> <log4j:events xmlns:log4j="http://jakarta.apache.org/log4j/">
>   <log4j:event logger="org.apache.droids.exception.ExceptionHandler" timestamp="1361325224196" level="ERROR" thread="main">
>    <log4j:message><![CDATA[org.apache.droids.core.DroidsException: org.apache.droids.core.DroidsException: org.apache.droids.core.DroidsException: org.apache.http.client.HttpResponseException: Internal Server Error http://localhost:8888/xxx/details/xxx]]>
>   </log4j:message>
>   <log4j:locationInfo class="org.apache.droids.exception.ExceptionHandler" method="handleException" file="ExceptionHandler.java" line="23"/>
>  </log4j:event>
> </log4j:events>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira