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_Format - Fatal编程技术网

使用新类更改java中的日志记录格式

使用新类更改java中的日志记录格式,java,logging,format,Java,Logging,Format,我想更改我的日志格式 我所拥有的: Jul 23, 2019 10:17:02 PM myclass log INFO: message 我想要的是: Jul 23, 2019 10:17:02 INFO: message 我该怎么做,你能帮我吗 public class AIVLogger { private static Logger logger = Logger.getLogger(AIVLogger.class.getName()); private static

我想更改我的日志格式

我所拥有的:

Jul 23, 2019 10:17:02 PM myclass log INFO: message
我想要的是:

Jul 23, 2019 10:17:02 INFO: message
我该怎么做,你能帮我吗

public class AIVLogger {

    private static Logger logger = Logger.getLogger(AIVLogger.class.getName());
    private static FileHandler fh = null;
    private static String logFolder = System.getProperty("user.dir") + File.separator + "Configuration_Data" + File.separator + "log";
    private static String logFile = logFolder + File.separator + "logger";

    public static void initialize() {

        try {
            new File(logFolder).mkdirs();
            fh = new FileHandler(logFile + "_" + GenericFuncs.getTimeNowFileName() + ".txt", false);
        } catch (SecurityException e) {
            AIVLogger.log(e.getMessage());
        } catch (IOException e) {
            AIVLogger.log(e.getMessage());
        }
        fh.setFormatter(new SimpleFormatter());
        logger.addHandler(fh);
        logger.setLevel(Level.ALL);
    }

    public static Logger getInstance() {
        return logger;
    }

    public static void log(String logMessage) {
        //logger.log(logger.getLevel(), logMessage);
        Level x = logger.getLevel();
        logger.log(x, logMessage);
    }

}

这是我试图更改的类。

这完全取决于您使用的日志框架。例如:

  • 如果您只是使用
    System.out.println()
    ,只需更改打印的字符串即可

  • 如果使用的是Logback,则可以定义扩展
    LayoutBase
    的自定义布局类,并在布局xml文件中进行设置


通常,请查阅您正在使用的日志框架的文档,或在问题中提供此信息。

解决此问题的最佳方法是创建一个扩展Formatter的类并创建您自己的格式。这对我很有用:

private static final DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

public String format(LogRecord record) {
    StringBuilder builder = new StringBuilder(1000);
    builder.append(df.format(new Date(record.getMillis()))).append(" - ");
    builder.append("[").append(record.getLevel()).append("] : ");
    builder.append(formatMessage(record));
    builder.append("\n");
    return builder.toString();
}

public String getHead(Handler h) {
    return super.getHead(h);
}

public String getTail(Handler h) {
    return super.getTail(h);
}

事实上,我想更改这个simpleformer<代码>fh.setFormatter(新的SimpleFormatter())@AfonsoMarques
fh
有什么类型?@deHaar它是FileHandler fh您创建了类
FileHandler
还是从库中创建的?它是从库中创建的。我想@override'toString'方法。如果该类来自库,并且要重写
toString()
,则必须从该类继承。但是我如何编辑日志格式?请添加一些示例(Java代码,而不是日志输出),其中使用类
文件处理程序
。它是
java.util.logging.FileHandler