[ 
https://issues.apache.org/jira/browse/LOG4J2-1921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16095974#comment-16095974
 ] 

Ajitha edited comment on LOG4J2-1921 at 7/21/17 8:50 AM:
---------------------------------------------------------

Friends,

I want to give a background on the requirement, so that you can understand my 
problem better.

We were mainly using log4j for following purposes:
>I dont want logs to be written to the default Android's adb which is what 
>"android.util.Log.d" is doing. My end user will share that file via email for 
>me to debug their issues/problems.
>We wanted to ALWAYS redirect the logs to a file rather than default logging 
>console of Android.
>We have two layers - application layer and middleware layer. Log4j was 
>thread-safe to post logs
>All other platforms like Windows were using log4j and we were aligned with 
>other platforms of our application.

The code we follow is exactly like in  
"https://github.com/loune/log4j2-android"; . Our application was using v2.3 of 
log4j-api and log4j-core. And it was fine and due to some issue we wanted to 
upgrade and we faced the problem.

We were doing following:
1)On the app launch, we initialised log4j as in the example app using my "xml 
configuration" file as shown in 
https://github.com/loune/log4j2-android/blob/master/Log4jExampleApp/app/src/main/java/net/loune/log4jexampleapp/App.java
{code:java}
AndroidLog4jHelper.initialise(this.getApplicationContext(), R.raw.log4j_debug);
{code}

2) After that user can anytime change the logging levels through a menu option 
and when the user changes the log level, we used below code to update log 
levels.

{code:java}
        LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
        Configuration config = ctx.getConfiguration();
        LoggerConfig loggerConfig = 
config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
        loggerConfig.setLevel(loglvl);
        ctx.updateLoggers();
{code}

This was my total use-case.

In latest release of log4j-api-android , I am not able to see any methods which 
can get my config file and give me a output file with logs written. As much as 
I understand it writes logs to the android logging console which is not my 
use-case.

I am not able to proceed. Is it just possible to remove the "java 9" classes 
from log4j-core and give us a release addressing our use-case. 

Sorry to trouble you guys. We have been benefitted by your library greatly 
which was very much robust. Please help us here.

-Ajitha Yasmin S


was (Author: ajitha):
Friends,

I want to give a background on the requirement, so that you can understand my 
problem better.

We were mainly using log4j for following purposes:
>I dont want logs to be written to the default Android's adb which is what 
>"android.util.Log.d" is doing. My end user will share that file via email for 
>me to debug their issues/problems.
>We wanted to ALWAYS redirect the logs to a file rather than default logging 
>console of Android.
>We have two layers - application layer and middleware layer. Log4j was 
>thread-safe to post logs
>All other platforms like Windows were using log4j and we were aligned with 
>other platforms of our application.

The code we follow is exactly like in  
"https://github.com/loune/log4j2-android"; . Our application was using v2.3 of 
log4j-api and log4j-core. And it was fine and due to some issue we wanted to 
upgrade and we faced the problem.

We were doing following:
1)On the app launch, we initialised log4j as in the example app using my "xml 
configuration" file as shown in 
https://github.com/loune/log4j2-android/blob/master/Log4jExampleApp/app/src/main/java/net/loune/log4jexampleapp/App.java
{code:java}
AndroidLog4jHelper.initialise(this.getApplicationContext(), R.raw.log4j_debug);
{code}

2) After that user can anytime change the logging levels through a menu option 
and when the user changes the log level, we used below code to update log 
levels.

{code:java}
        LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
        Configuration config = ctx.getConfiguration();
        LoggerConfig loggerConfig = 
config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
        loggerConfig.setLevel(loglvl);
        ctx.updateLoggers();
{code}

This was my total use-case.

In latest release og log4j-api-android , I am not able to see any methods which 
can get my config file and give me a output file with logs written. I am not 
able to proceed. Is it just possible to remove the "java 9" classes from 
log4j-core and give us a release addressing our use-case.

Sorry to trouble you guys. We have been benefitted by your library greatly 
which was very much robust. Please help us here.

-Ajitha Yasmin S

> Getting ClassCastException while getting LoggerContext
> ------------------------------------------------------
>
>                 Key: LOG4J2-1921
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1921
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Configurators
>    Affects Versions: 2.8.2
>         Environment: Android
>            Reporter: Ajitha
>            Priority: Blocker
>              Labels: Android
>
> Hi, 
> I integrated the log4j with my Android application and did the initial 
> config. It works fine.  I have a menu item in "Settings" screen where I can 
> change the log levels in my application. So, After I change the 
> configuration, I need to update the loggers. So I am using following logic. 
> {code:java}
> LoggerContext ctx = LoggerContext.getContext()
>         Configuration config = ctx.getConfiguration();
>         LoggerConfig loggerConfig = 
> config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
>         loggerConfig.setLevel(myLogLevel);
>         ctx.updateLoggers();
> {code}
> While getting the logger context, I am getting a ClassCastException.
> 05-26 22:33:21.011 E/AndroidRuntime( 9642): Caused by: 
> java.lang.ClassCastException: 
> org.apache.logging.log4j.simple.SimpleLoggerContext cannot be cast to 
> org.apache.logging.log4j.core.LoggerContext
> 05-26 22:33:21.011 E/AndroidRuntime( 9642):   at 
> org.apache.logging.log4j.core.LoggerContext.getContext(LoggerContext.java:190)
> 05-26 22:33:21.011 E/AndroidRuntime( 9642):   at 
> org.apache.logging.log4j.core.config.Configurator.setRootLevel(Configurator.java:323)
> Please help here.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to