I want to extend the java.util.logging.Logger class.
I have the following code. I am "forcing an error" in our app and the class I created is not being called.
Here is the error I am generating on purpose but it doesn't go in the code I wrote:
//Generate error to test the logger
String[] myStringArray = new String[3];
String test;
test = myStringArray[5];
I also tried this but it still doesn't go in my code even if I have the same function definition:
logger.log(Level.FINE, "test my logger");
Here is my logger extension. Is it possible for this to get triggered when an unhandled exception is "raised".
import java.util.logging.Level;
import java.util.logging.LogRecord;
public class MyLogger extends java.util.logging.Logger
{
public MyLogger(String name, String resourceBundleName)
{
super(name, resourceBundleName);
runMyLog();
}
public void log(Level level, String msg) {
runMyLog();
}
public void error(String msg)
{
super.log(Level.SEVERE, msg);
runMyLog();
}
public void log(LogRecord record)
{
super.log(Level.SEVERE, record.getMessage());
runMyLog();
}
public void severe(String msg) {
log(Level.SEVERE, msg);
runMyLog();
}
public void runMyLog(){
String str = "lll";
str="fdsafasdfdasfasd";
}
}
As @leonbloy and @E-Riz pointed out, per the documentation:
So here would be an example that must be run with
-Djava.util.logging.manager=bad.idea.OdiousLogManager
so the JVM uses the new LogManager:If you only want to listen to events then you should simply implement a custom handler and avoid extending logger.