I create a registrar in java by executing the following code:
private static final String logFile = "." + File.separator + "Log Files" + File.separator + "Log_" + Long.toString(System.currentTimeMillis());
private static Logger logger = Logger.getLogger("JCS_Logger");
static
{
try
{
logger.addHandler(new FileHandler(logFile ));
}
catch (Exception e)
{
System.err.println("Could not return a static logger");
}
}
If I use this logger, it writes not only System.err, but also the file. Ultimately, I want to configure the logger so that it can write: '
- Both System.err and File
- Neither System.err nor the file
- Just System.err
- File only
I know that calling logger.setLevel(Level.OFF)will disable all logging, but I'm not sure how to do this for the list above? Is this done through the Level class? Any ideas or suggestions would be greatly appreciated.
EDIT: Thanks for the answers. I solved this with this code:
static boolean debug = true;
static boolean writeLogToFile = false;
static boolean writeLogToStdErr = true;
private static final String logFile = "." + File.separator + "Log Files" + File.separator + "Log_" + Long.toString(System.currentTimeMillis());
private static Logger logger = Logger.getLogger("JCS_Logger");
private static Handler consoleHandler;
private static Handler fileHandler;
static
{
try
{
if(debug == false)
{
logger.setLevel(Level.OFF);
}
if(writeLogToFile == true)
{
fileHandler = new FileHandler(BCApp.getLogFileHandlerPath());
logger.addHandler(fileHandler);
}
if(writeLogToStdErr == false)
{
consoleHandler = logger.getParent().getHandlers()[0];
logger.getParent().removeHandler(consoleHandler);
}
}
catch (Exception e)
{
System.err.println("Could not return a static logger");
}
}
thanks for the help
source
share