ich einen Logger in Java erschaffe durch den folgenden Code ausführen:Logging in Java
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");
}
}
Wenn ich diesen Logger zu verwenden, schreibt er nicht nur System.err, sondern auch in die Datei. Schließlich möchte ich den Logger konfigurieren, damit es schreiben:‘
- Beide System.err und Datei
- Weder System.err und Datei
- Gerade System.err
- Gerade Datei
Ich weiß, dass das Aufrufen von logger.setLevel(Level.OFF)
die gesamte Protokollierung deaktiviert, aber ich bin nicht sicher, wie es für die obige Liste zu tun? Wird es durch die Level-Klasse gemacht? Irgendwelche Ideen oder Vorschläge würden sehr geschätzt werden.
EDIT: Vielen Dank für die Antworten. Ich löste es mit diesem Code:
/**
* If debug should be turned on
*/
static boolean debug = true;
/**
* If writing debug to file
*/
static boolean writeLogToFile = false;
/**
* If writing debug to System.err
*/
static boolean writeLogToStdErr = true;
/**
* Location for the temp file
*/
private static final String logFile = "." + File.separator + "Log Files" + File.separator + "Log_" + Long.toString(System.currentTimeMillis());
/**
* Instance of the logger
*/
private static Logger logger = Logger.getLogger("JCS_Logger");
/**
* Handler for System.err
*/
private static Handler consoleHandler;
/**
* Handler for the log file
*/
private static Handler fileHandler;
static
{
try
{ //if not debuggin at all
if(debug == false)
{
logger.setLevel(Level.OFF);
}
//if not writing to the file
if(writeLogToFile == true)
{
fileHandler = new FileHandler(BCApp.getLogFileHandlerPath());
logger.addHandler(fileHandler);
}
//if not writing to System.err
if(writeLogToStdErr == false)
{
consoleHandler = logger.getParent().getHandlers()[0];
logger.getParent().removeHandler(consoleHandler);
}
}
catch (Exception e)
{
System.err.println("Could not return a static logger");
}
}
Danke für die Hilfe
Danke, Ihre Antwort war ebenso hilfreich. – user489041