编程语言
首页 > 编程语言> > 登录Java

登录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