次のコードを実行して、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");
}
}
このロガーを使用すると、System.err だけでなくファイルにも書き込みます。最終的には、次の場所に書き込みできるようにロガーを構成したいと考えています。
- System.err と File の両方
- System.err と File のどちらでもない
- ただSystem.err
- ジャストファイル
呼び出すlogger.setLevel(Level.OFF)
とすべてのログがオフになることはわかっていますが、上記のリストに対してそれを行う方法がわかりません。それはLevelクラスを通して行われますか? アイデアや提案は大歓迎です。
編集:回答ありがとうございます。私はこのコードでそれを解決しました:
/**
* 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");
}
}
助けてくれてありがとう