使用多个参数进行日志记录

2022-09-01 11:16:29

我目前正在开发一个程序,其中,我必须将所有输出写入日志文件。

我需要编写一个日志方法,该方法应以与我指定的相同顺序给出具有级别,消息,对象值,另一条消息,整数值,另一条消息和另一个整数值的输出。我似乎找不到执行此操作的日志方法。我正在使用.这可能吗?Java.util.logging


答案 1

我假设您需要以下格式的日志格式 FINE,Message1,object。GetValue(),Message2,1,Message3,2

您需要创建输出消息格式

logger.log(Level.INFO, "{0},{1},{2},{3},{4},{5}",new Object[]{Message1,object.getValue(),Message2,1,Message3,2});

现在,您需要创建一个自定义格式化程序,通过扩展格式化程序类

public class DataFormatter extends Formatter {

@Override
public synchronized String format(LogRecord record) {
    String formattedMessage = formatMessage(record);
    String throwable = "";
    String outputFormat = "%1$s, %2$s \n %3$s"; //Also adding for logging exceptions
    if (record.getThrown() != null) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        pw.println();
        record.getThrown().printStackTrace(pw);
        pw.close();
        throwable = sw.toString();
    }
    return String.format(outputFormat,record.getLevel().getName(),formattedMessage,throwable);
}
}

现在设置新创建的格式化程序

    for(int i=0;i<logger.getHandlers().length;i++)
        logger.getHandlers()[i].setFormatter(new DataFormatter());

答案 2

我们在使用slf4j记录器时使用了下面的代码 -

logger.error("Error while finding A from DB. a : {} and b : {}", a, b);
logger.info("Nothing found in db for A with a : {} and b : {}", a, b);

推荐