登录Java
作者:互联网
我通过执行以下代码在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和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");
}
}
谢谢您的帮助
解决方法:
您可以只为需要的项目添加处理程序,从而在启动日志时进行选择.或者,您可以添加所有处理程序,并通过记录阈值调整每个处理程序.
要调整处理程序的日志记录阈值,请使用handler.setLevel(…);
请注意,启动时已经配置了默认处理程序.您可能需要以编程方式删除该处理程序,或者将其调整为不处理任何内容,具体取决于您希望实现哪种日志处理程序“处理”技术.
标签:java-util-logging,logging,java 来源: https://codeday.me/bug/20191208/2095062.html