如何在android系统配置java.util.logging.Logger中使用放置在SD卡日志记录属性文件? [英] How to configure java.util.logging.logger in android to use a logging properties file placed on the sdcard?

查看:632
本文介绍了如何在android系统配置java.util.logging.Logger中使用放置在SD卡日志记录属性文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在试图用java.util.logging.Logger中登录的东西到SD卡上的文件。现在,我想记录器使用日志记录配置/属性文件,我将提供的SD卡。

I have been trying to use java.util.logging.logger to log stuff on to a file on sdcard. Now, I want the logger to use a logging configuration/properties file that I will provide on the sdcard.

这是我一直在努力的一个方法是: -

One way that I have been trying is:-

我一直在尝试使用日志管理和java.util preFS preferences,但我得到的 BackingStoreException - > AccessPermission异常 perculating下来的错误消息。再由psented $ p $的Java /。用户preFS /路径 STR / prefs.xml 没有被发现。

I have been trying to use logmanager and java.util.prefs.preferences, but I get the BackingStoreException-->AccessPermission Exception perculating down to an error message that .java/.userprefs/path represented by str/prefs.xml was not found.

private void setLoggingProperties(File logProperties) throws Exception {
    try {
    if(logProperties!=null && logProperties.isFile() && logProperties.exists()) {
        String str = logProperties.getAbsolutePath();
        MyLogger.v(TAG,"Log Properties file path: " + str);
        if(str!=null && str.length()>=0) {
            Preferences logPropPref = Preferences.userNodeForPackage(SSCService.class);

            if(logPropPref!=null) {
                String path = logPropPref.get(LOG_CONFIG_FILE_KEY,"");
                if(path.equals(str)) {
                    SirfLogger.v(TAG,"No need to set config for log");
                    return;
                }
                MyLogger.v(TAG,"Setting log properties: " + str);
                logPropPref.put(LOG_CONFIG_FILE_KEY, str);
                logPropPref.flush();
            }
            LogManager lManager = LogManager.getLogManager();
            if(lManager!=null) {
                lManager.readConfiguration();
            }

        }   

    } 
    } catch(Exception ex) {
        MyLogger.v(TAG, "Exception setting log properties: " + ex.toString() + " , ignoring" );
    }

}

任何人都可以提供一些见解吗?

May anyone provide some insight please?

-Robin

推荐答案

通过可用的文档会,并做一些打击和考验之后。这是如何工作的: -

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

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

请注意,有在这里logging.properties正在使用两个处理程序。之一是的FileHandler,它登录到该文件,而另一个是com.android.internal.logging.AndroidHandler(它负责在logcat中正确显示的日志)。如果你想看到的logcat日志以及添加com.android.internal.logging.AndroidHandler是必要的。如果你不会在日志属性添加此处理程序,所有的日志将作为logcat中被sys.err抛出(警告级别)。

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).

这篇关于如何在android系统配置java.util.logging.Logger中使用放置在SD卡日志记录属性文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆