Re: PaxLogging: org.ops4j.pax.logging.log4jv2.Log4jv2LoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext

2017-10-01 Thread Grzegorz Grzybek
Hello

For log4j, there's
https://github.com/ops4j/org.ops4j.pax.logging/blob/master/pax-logging-log4j2/src/main/java/org/ops4j/pax/logging/log4j2/appender/PaxOsgiAppender.java
that does just that - uses in-memory buffer. It's registered as log4j
plugin.

I would so similar thing - register an appender as plugin AND as OSGi
service (or have it referenced in other way) - so you won't have to
retrieve it back from log4j2 internals.

As for configuration - I still think it's better to configure it via
configadmin. Otherwise you'd just have to reimplement pax-logging-log4j2 in
a way that allows configuration using different method.

regards
Grzegorz Grzybek

2017-10-02 6:43 GMT+02:00 Asma Zinneera Jabir :

>
> The way I have configured Log4j2 is through the following entry in
> pax-logging.properties.
>
> org.ops4j.pax.logging.log4j2.config.file=path/to/log4j2.properties
>
> So when I try:
>
> Hashtable log4jProps = new Hashtable();
> log4jProps.put( "appender.CONSOLE.layout.pattern", "[%d] %5p {%c} -
> %m%ex%n" );
> configuration.update(log4jProps);
>
> This will add another entry into pax-logging.properties as
> appender.CONSOLE.layout.pattern = [%d] %5p {%c} - %m%ex%n which makes all
> the entries in pax-logging.properties invalid.
>
> To make my requirement clear, I have two things to do.
>
> 1. I have a Log4J2 custom memory appender in which writes log events to a
> circular buffer. During the runtime, I need to display these logs in the
> UI. For this, I should be able to get the memory appender form the log4j2
> context.
> 2. I need to give an option to the user to reconfigure all the appenders
> during runtime throught the UI. For this, I should be able to reconfigure
> the specified properties of appenders programatically.
>
>
> On Wednesday, August 9, 2017 at 9:00:12 PM UTC+5:30, Jérémie Brébec wrote:
>>
>> Hello,
>>
>> I am using pax-logging 1.10.1 through Karaf 4.1.2 ;
>>
>> I am trying to integrate the log generated by my ElasticSearch bundle to
>> the pax-logging implementation. However, this didn't work because a
>> ClassCastException. I haven't see any "duplicate classloader issues", and
>> when I check the code, the ClassCastException doesn't feel to be
>> osgi-related. Is it a known issue or I am missing something ?
>>
>> Regards,
>> Jérémie
>>
>> java.lang.ClassCastException: 
>> org.ops4j.pax.logging.log4jv2.Log4jv2LoggerContext
>> cannot be cast to org.apache.logging.log4j.core.LoggerContext
>> at 
>> org.apache.logging.log4j.core.LoggerContext.getContext(LoggerContext.java:190)
>> [6:org.ops4j.pax.logging.pax-logging-log4j2:1.10.1]
>> at 
>> org.apache.logging.log4j.core.config.Configurator.setLevel(Configurator.java:291)
>> [6:org.ops4j.pax.logging.pax-logging-log4j2:1.10.1]
>> at 
>> org.elasticsearch.common.logging.Loggers.setLevel(Loggers.java:149)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.common.logging.Loggers.setLevel(Loggers.java:144)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.index.SearchSlowLog.setLevel(SearchSlowLog.java:111)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.index.SearchSlowLog.(SearchSlowLog.java:106)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.index.IndexModule.(IndexModule.java:127)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:441)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.indices.IndicesService.createIndex(IndicesService.java:414)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateServ
>> ice.validateAndAddTemplate(MetaDataIndexTemplateService.java:216)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateServ
>> ice.access$200(MetaDataIndexTemplateService.java:63)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateServ
>> ice$2.execute(MetaDataIndexTemplateService.java:172)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:45)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.cluster.service.ClusterService.executeTasks(ClusterService.java:634)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.service.ClusterService.calculateTa
>> skOutputs(ClusterService.java:612) [88:features.boss.elasticsearc
>> h.bundle:5.5.0]
>> at 
>> org.elasticsearch.cluster.service.ClusterService.runTasks(ClusterService.java:571)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.service.ClusterService$ClusterServ
>> iceTaskBatcher.run(ClusterSer

Re: PaxLogging: org.ops4j.pax.logging.log4jv2.Log4jv2LoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext

2017-10-01 Thread Guillaume Nodet
2017-10-02 6:43 GMT+02:00 Asma Zinneera Jabir :

>
> The way I have configured Log4j2 is through the following entry in
> pax-logging.properties.
>
> org.ops4j.pax.logging.log4j2.config.file=path/to/log4j2.properties
>

You can configure the properties directly in the
etc/org.ops4j.pax.logging.cfg too.


>
> So when I try:
>
> Hashtable log4jProps = new Hashtable();
> log4jProps.put( "appender.CONSOLE.layout.pattern", "[%d] %5p {%c} -
> %m%ex%n" );
> configuration.update(log4jProps);
>
> This will add another entry into pax-logging.properties as
> appender.CONSOLE.layout.pattern = [%d] %5p {%c} - %m%ex%n which makes all
> the entries in pax-logging.properties invalid.
>
> To make my requirement clear, I have two things to do.
>
> 1. I have a Log4J2 custom memory appender in which writes log events to a
> circular buffer. During the runtime, I need to display these logs in the
> UI. For this, I should be able to get the memory appender form the log4j2
> context.
>

For this, you just need to register an OSGi service implementing
org.ops4j.pax.logging.spi.PaxAppender and it will be given all log events.


> 2. I need to give an option to the user to reconfigure all the appenders
> during runtime throught the UI. For this, I should be able to reconfigure
> the specified properties of appenders programatically.
>

Yes, that's doable without any problems.  The thing you need to pay
attention to is if the main configuration has an indirection to another
file, in which case, you'd have to modify that file instead.  The reason
for this indirection is that at first, properties-based configuration was
not available, so the main config would contain a pointer to the xml config.
Now, if you control everything, just make sure the configuration is
flattened in the org.ops4j.pax.logging configuration and it should be ok.

Cheers,
Guillaume Nodet



>
>
> On Wednesday, August 9, 2017 at 9:00:12 PM UTC+5:30, Jérémie Brébec wrote:
>
>> Hello,
>>
>> I am using pax-logging 1.10.1 through Karaf 4.1.2 ;
>>
>> I am trying to integrate the log generated by my ElasticSearch bundle to
>> the pax-logging implementation. However, this didn't work because a
>> ClassCastException. I haven't see any "duplicate classloader issues", and
>> when I check the code, the ClassCastException doesn't feel to be
>> osgi-related. Is it a known issue or I am missing something ?
>>
>> Regards,
>> Jérémie
>>
>> java.lang.ClassCastException: 
>> org.ops4j.pax.logging.log4jv2.Log4jv2LoggerContext
>> cannot be cast to org.apache.logging.log4j.core.LoggerContext
>> at 
>> org.apache.logging.log4j.core.LoggerContext.getContext(LoggerContext.java:190)
>> [6:org.ops4j.pax.logging.pax-logging-log4j2:1.10.1]
>> at 
>> org.apache.logging.log4j.core.config.Configurator.setLevel(Configurator.java:291)
>> [6:org.ops4j.pax.logging.pax-logging-log4j2:1.10.1]
>> at 
>> org.elasticsearch.common.logging.Loggers.setLevel(Loggers.java:149)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.common.logging.Loggers.setLevel(Loggers.java:144)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.index.SearchSlowLog.setLevel(SearchSlowLog.java:111)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.index.SearchSlowLog.(SearchSlowLog.java:106)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.index.IndexModule.(IndexModule.java:127)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:441)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.indices.IndicesService.createIndex(IndicesService.java:414)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateServ
>> ice.validateAndAddTemplate(MetaDataIndexTemplateService.java:216)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateServ
>> ice.access$200(MetaDataIndexTemplateService.java:63)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateServ
>> ice$2.execute(MetaDataIndexTemplateService.java:172)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:45)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at 
>> org.elasticsearch.cluster.service.ClusterService.executeTasks(ClusterService.java:634)
>> [88:features.boss.elasticsearch.bundle:5.5.0]
>> at org.elasticsearch.cluster.service.ClusterService.calculateTa
>> skOutputs(ClusterService.java:612) [88:features.boss.elasticsearc
>> h.bundle:5.5.0]
>> at 
>> org.elasticsearch.cluster.service.ClusterService.runTasks(ClusterService.java:571)
>> [88:features.boss.elasticsearch.bundle:5.5.0]

Re: PaxLogging: org.ops4j.pax.logging.log4jv2.Log4jv2LoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext

2017-10-01 Thread Asma Zinneera Jabir

The way I have configured Log4j2 is through the following entry in 
pax-logging.properties.

org.ops4j.pax.logging.log4j2.config.file=path/to/log4j2.properties

So when I try:

Hashtable log4jProps = new Hashtable();
log4jProps.put( "appender.CONSOLE.layout.pattern", "[%d] %5p {%c} - 
%m%ex%n" );
configuration.update(log4jProps);

This will add another entry into pax-logging.properties as 
appender.CONSOLE.layout.pattern 
= [%d] %5p {%c} - %m%ex%n which makes all the entries in 
pax-logging.properties invalid. 

To make my requirement clear, I have two things to do.

1. I have a Log4J2 custom memory appender in which writes log events to a 
circular buffer. During the runtime, I need to display these logs in the 
UI. For this, I should be able to get the memory appender form the log4j2 
context.
2. I need to give an option to the user to reconfigure all the appenders 
during runtime throught the UI. For this, I should be able to reconfigure 
the specified properties of appenders programatically.


On Wednesday, August 9, 2017 at 9:00:12 PM UTC+5:30, Jérémie Brébec wrote:
>
> Hello,
>
> I am using pax-logging 1.10.1 through Karaf 4.1.2 ;
>
> I am trying to integrate the log generated by my ElasticSearch bundle to 
> the pax-logging implementation. However, this didn't work because a 
> ClassCastException. I haven't see any "duplicate classloader issues", and 
> when I check the code, the ClassCastException doesn't feel to be 
> osgi-related. Is it a known issue or I am missing something ?
>
> Regards,
> Jérémie
>
> java.lang.ClassCastException: 
> org.ops4j.pax.logging.log4jv2.Log4jv2LoggerContext cannot be cast to 
> org.apache.logging.log4j.core.LoggerContext
> at 
> org.apache.logging.log4j.core.LoggerContext.getContext(LoggerContext.java:190)
>  
> [6:org.ops4j.pax.logging.pax-logging-log4j2:1.10.1]
> at 
> org.apache.logging.log4j.core.config.Configurator.setLevel(Configurator.java:291)
>  
> [6:org.ops4j.pax.logging.pax-logging-log4j2:1.10.1]
> at 
> org.elasticsearch.common.logging.Loggers.setLevel(Loggers.java:149) 
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.common.logging.Loggers.setLevel(Loggers.java:144) 
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.index.SearchSlowLog.setLevel(SearchSlowLog.java:111) 
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.index.SearchSlowLog.(SearchSlowLog.java:106) 
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.index.IndexModule.(IndexModule.java:127) 
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:441)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.indices.IndicesService.createIndex(IndicesService.java:414) 
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService.validateAndAddTemplate(MetaDataIndexTemplateService.java:216)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService.access$200(MetaDataIndexTemplateService.java:63)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService$2.execute(MetaDataIndexTemplateService.java:172)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:45)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.service.ClusterService.executeTasks(ClusterService.java:634)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.service.ClusterService.calculateTaskOutputs(ClusterService.java:612)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.service.ClusterService.runTasks(ClusterService.java:571)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.service.ClusterService$ClusterServiceTaskBatcher.run(ClusterService.java:263)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569)
>  
> [88:features.boss.elasticsearch.bundle:5.5.0]
> at 
> org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:247)
>  
> [88:features.boss.elasticsearch.b