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:-
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:-
logging.properties
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).