How to configure java.util.logging.logger in android to use a logging properties file placed on the sdcard?

喜夏-厌秋 提交于 2019-12-04 07:43:52

After going through the available documentation and doing some hit and trials. This is how it works:-

        static final String LOGGER_NAME = "com.robin.mylogger"
        LogManager lManager = LogManager.getLogManager();
        FileInputStream is = new FileInputStream(logProperties);
        if(lManager!=null) {
            lManager.readConfiguration(is);

        }
        mLoggerInstance = Logger.getLogger(LOGGER_NAME);
         if(mLoggerInstance!=null)
             LogManager.getLogManager().addLogger(mLoggerInstance);

logging.properties

               ############################################################
               #    Default Logging Configuration File
#
# You can use a different file by specifying a filename
# with the java.util.logging.config.file system property.  
# For example java -Djava.util.logging.config.file=myfile
############################################################

############################################################
#   Global properties
############################################################

# "handlers" specifies a comma separated list of log Handler 
# classes.  These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.
#handlers= java.util.logging.ConsoleHandler

# To also add the FileHandler, use the following line instead.
handlers= java.util.logging.FileHandler, com.android.internal.logging.AndroidHandler

# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers.  For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
.level= FINEST

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = /mnt/sdcard/csr/logs/test.log
java.util.logging.FileHandler.limit = 5000000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.level = FINEST
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

# Limit the message that are printed on the console to INFO and above.
#java.util.logging.ConsoleHandler.level = FINEST
#java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

com.android.internal.logging.AndroidHandler.level = FINEST
com.android.internal.logging.AndroidHandler.formatter = java.util.logging.SimpleFormatter


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#com.robin.mylogger.level = FINEST

Please note that there are two handlers being used in the logging.properties here. One is filehandler, which logs on to the file, and the other one is com.android.internal.logging.AndroidHandler(which is responsible for displaying the logs properly in logcat). The addition of com.android.internal.logging.AndroidHandler is necessary if you want to see the logs in logcat as well. If you will not add this handler in the logging properties, all the logs will be thrown on logcat as sys.err (warn level).

You may have a look @ android-logging-log4j

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!