Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日志记录器记录所有内容_Java_Logging_Java.util.logging - Fatal编程技术网

Java日志记录器记录所有内容

Java日志记录器记录所有内容,java,logging,java.util.logging,Java,Logging,Java.util.logging,我正在使用java.util.logging。 我想要两个日志-一个用于时间测量,另一个用于所有其他事情。 问题是计时器记录器仍然记录所有内容,我如何告诉它只记录我发送给logTime方法的内容 import configurations.ConfigReader; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import j

我正在使用java.util.logging。 我想要两个日志-一个用于时间测量,另一个用于所有其他事情。 问题是计时器记录器仍然记录所有内容,我如何告诉它只记录我发送给logTime方法的内容

import configurations.ConfigReader;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.*;

import configurations.Time;
import main.Main;
/**
* Created by giladba on 27/01/2016.
*/
public class LogManager {
    private static final String LOGS_PATH = (String) ConfigReader.get(ConfigReader.Field.LOGS);
    private static Logger globalLogger = Logger.getLogger(Main.class.getName());
    private static Logger timingLogger = Logger.getLogger(Main.class.getName());

    static {
        initLoggers(globalLogger, (String) ConfigReader.get(ConfigReader.Field.ST_VIEW));
        initLoggers(timingLogger, ConfigReader.get(ConfigReader.Field.ST_VIEW) + "_timing");
        timingLogger.setUseParentHandlers(false);
    }

    public synchronized static void log(String message) {
        globalLogger.info(message);
    }

    public synchronized static void logTime(String action, long time1, long time2) {
        timingLogger.info(Time.getTimeNowFormatted() + action + "\t\t : " + (time2-time1) + " ms");
    }

    /**
     * Initializes the logger.
     * @throws SecurityException
     * @throws IOException
     */
    private static void initLoggers(Logger curLog, String name) throws SecurityException {
        FileHandler procHandler = null;
        try {
            File file = new File(LOGS_PATH);
            if(!file.exists())
                file.mkdirs();
            procHandler = new FileHandler(LOGS_PATH + name + "_log.out", 2048000, 20, true);
        } catch (IOException e) {
            e.printStackTrace();
        }

        procHandler.setFormatter(new MyFormatter());

        procHandler.setLevel(Level.INFO);

        curLog.addHandler(procHandler);
        curLog.setUseParentHandlers(true);
        curLog.info("\n");
        curLog.info("--------" + (new SimpleDateFormat("dd-MM-yy_HH:mm:ss")).format(new Date()) + "--------");
    }

    /**
     * simple naked formatter for the log files.
     * @author jeremieg
     *
     */
    static class MyFormatter extends Formatter {

        @Override
        public String format(LogRecord arg0) {
            return arg0.getMessage() + "\n";
        }
    }
}
这是同一个记录器,因此,您的配置会混淆


您必须给Logger.getLogger指定两个不同的名称才能获得两个不同的记录器。

您的日志配置在哪里?除此之外:您可能需要决定是否使用不同的框架(如slf4j或log4j/log4j2)更适合您。实际上,请切换到现代框架(如slf4j)。您指的是哪些配置?如果您谈论的是ConfigReader,那么它所做的就是返回一个指向我要将日志放入的目录的路径。
private static Logger globalLogger = Logger.getLogger(Main.class.getName());
private static Logger timingLogger = Logger.getLogger(Main.class.getName());