[ 
http://issues.ops4j.org/browse/PAXLOGGING-72?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13309#action_13309
 ] 

Mateusz Nowakowski commented on PAXLOGGING-72:
----------------------------------------------

My appender is org.apache.log4j.DailyRollingFileAppender with own layout and 
own error handler. I configure this appender in Spring DM:

{code}
        <bean id="myAppender" class="org.apache.log4j.DailyRollingFileAppender" 
init-method="activateOptions">
                <property name="name" value="SWSMainAppender"/>
                <property name="append" value="true"/>
                <property name="datePattern" value="'.'yyyy-MM-dd-HH"/>
                <property name="file" 
value="${karaf.base}/data/log/someLog.log"/>
                <property name="threshold">
                        <util:constant 
static-field="org.apache.log4j.Level.DEBUG"/>
                </property>
                <property name="layout">
                        <bean 
class="com.xxxxx.log4j.layout.SophisticatedLayout">
                                <property name="conversionPattern" value="..."/>
                        </bean>
                </property>
                <property name="errorHandler">
                        <bean class="com......SomeErrorHandler" 
init-method="activateOptions">
                                <property name="appender" 
ref="myMainAppender"/><!-- must be this appender -->
                                <property name="backupAppender" 
ref="someOtherAppender"/>
                                <property name="a" value="c"/>
                                <property name="b" value="d"/>
                        </bean>
                </property>
        </bean>

        <bean id="myPaxAppender" class="com.......PaxLog4jAppenderWrapper">
                <property name="log4jAppender" ref="myMainAppender"/>
        </bean> 

        <osgi:service ref="myPaxAppender" 
interface="org.ops4j.pax.logging.spi.PaxAppender">
                <osgi:service-properties>
                        <entry>
                                <key>
                                        <util:constant 
static-field="org.ops4j.pax.logging.PaxLoggingService.APPENDER_NAME_PROPERTY"/>
                                </key>
                                <value>MyAppender</value>
                        </entry>
                </osgi:service-properties>
        </osgi:service>
{code}
and     ${karaf.base}/etc/org.ops4j.pax.logging.cfg contains like:
{code
log4j.logger.com.myCompany=INFO, osgi:MyAppender
{code}

This solution needs additional log4j bundle in the application, but it works.

And answer for your comments:
>1. The Log4j packages in Pax Logging API are NOT original code and augmented 
>to fit into the OSGi environment. 
What kind of changes? Could you provide some link to the docs about them, or 
point the classes which are changed?

>3. I strongly want to avoid DynamicImport, so it won't be possible to "just 
>use" any class that implements Log4j Appender.
Me neither. But the appender would be provided via OSGI service as it is 
PaxAppender implementation, so PAX  doesn't have to  DynamicImport?

>"it is impossible to use all log4j capabilities" --> Yes, and it is both by 
>design and by necessity. Sorry.
Very strange especially PAX Logging configuration is based on log4j.

>Perhaps if you explain what you want your own Appender to do, we just create 
>one for Pax Logging, 
Provide all log4j appenders as PaxAppenders and export them that other bundles 
can extend them.

>but no real passion to do it... 
The whole OSGI is not easy as it is supposed to be.

> No implementations available for PaxAppender
> --------------------------------------------
>
>                 Key: PAXLOGGING-72
>                 URL: http://issues.ops4j.org/browse/PAXLOGGING-72
>             Project: Pax Logging
>          Issue Type: Improvement
>          Components: Service
>    Affects Versions: 1.4
>         Environment: WinXp, Fuse 4.2 RC1
>            Reporter: Mateusz Nowakowski
>            Assignee: Niclas Hedhman
>
> Currently it is not possible to use own appender based on log4j using 
> existing PaxLoggingConfigurator.  It is really strange because 
> PaxLoggingConfigurator is based on log4j appenders.
> There can be used only PaxAppender implementation, but none is available.
> There are two solutions to solve the problem. Both are bad.
> - create own appender based on log4j appender and attach it via Fragment-Host 
> mechanism to Pax Logging Service bundle -- bad solution, because current 
> PaxLoggingConfigurator do not support error handlers etc (I've already 
> created PAXLOGGING-71 for it)
> - write PaxAppender implementation which aggregates any log4 appender - bad, 
> because it requires an additional log4j bundle in the application  (Pax 
> Logging exports only two log4j packages without most of log4j code, 
> especially without appenders), what is more it is a performance killer, 
> because PaxAppender implementation wraps some appender based on log4 
> appender, and PAX creates own wrapper to return log4j appender from 
> PaxAppender...
> There are two complementary solution:
> -  PAXLOGGING-71
> - PaxLoggingConfigurator or its AppenderTracker should track not only 
> PaxAppender but original log4j Appender. What is more all log4j packages 
> should be exported.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.ops4j.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

_______________________________________________
general mailing list
general@lists.ops4j.org
http://lists.ops4j.org/mailman/listinfo/general

Reply via email to