DML_LOG_INTERNAL
#define DML_LOG_FATAL(fmt, ...) DML_LOG_INTERNAL("[DML FATAL] " fmt, ## __VA_ARGS__)
#define DML_LOG_ERROR(fmt, ...) DML_LOG_INTERNAL("[DML ERROR] "fmt, ## __VA_ARGS__)
#define DML_LOG_WARN(fmt, ...) DML_LOG_INTERNAL("[DML WARN] "fmt, ## __VA_ARGS__)
#define DML_LOG_INFO(fmt, ...) DML_LOG_INTERNAL("[DML INFO] "fmt, ## __VA_ARGS__)
#define DML_LOG_DEBUG(fmt, ...) DML_LOG_INTERNAL(fmt, ## __VA_ARGS__)
#define DML_LOG_VERBOSE(fmt, ...) DML_LOG_INTERNAL(fmt, ## __VA_ARGS__)
DML_LOG_INTERNAL("<"element" name=\""); \
DML_LOG_INTERNAL(__func__); \
DML_LOG_INTERNAL("\">\n"); \
#define _LOG_EXIT(element) DML_LOG_INTERNAL("</"element">\n")
DML_LOG_INTERNAL(#field" = "format(field)); \
DML_LOG_INTERNAL("\n"); \
DML_LOG_INTERNAL(#field " = ["); \
DML_LOG_INTERNAL(format(field[_i])); \
DML_LOG_INTERNAL("]\n"); \
DML_LOG_INTERNAL(", "); \
DML_LOG_INTERNAL(#field" = ["); \
DML_LOG_INTERNAL("\n\t["); \
DML_LOG_INTERNAL(format(field[_i][_j])); \
DML_LOG_INTERNAL("]"); \
DML_LOG_INTERNAL(", "); \
DML_LOG_INTERNAL("]\n"); \
DML_LOG_INTERNAL(", "); \
DML_LOG_INTERNAL(#field" = ["); \
DML_LOG_INTERNAL("\n\t["); \
DML_LOG_INTERNAL("["); \
DML_LOG_INTERNAL(format(field[_i][_j][_k])); \
DML_LOG_INTERNAL("]"); \
DML_LOG_INTERNAL(", "); \
DML_LOG_INTERNAL("]"); \
DML_LOG_INTERNAL(", "); \
DML_LOG_INTERNAL("]\n"); \
DML_LOG_INTERNAL(", "); \