我正在通过执行以下代码在 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 和文件
- 既不是 System.err 也不是文件
- 只是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");
}
}
感谢帮助
最佳答案
您可以只为想要的项目添加处理程序,在日志记录启动时进行选择;或者,您可以添加所有处理程序,并通过日志记录阈值调整每个处理程序。
要调整处理程序的日志记录阈值,请使用 handler.setLevel(...);
请注意,在启动时已经配置了一个默认的处理程序。您可能需要以编程方式删除该处理程序,或将其调整为不处理任何内容,具体取决于您希望实现的日志处理程序“处理”技术。
关于java - 在 Java 中登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392604/