njin có logger riêng, dùng qua các macro NJIN_* có định dạng như printf:
NJIN_INFO(
"người chơi xuất hiện tại %.1f, %.1f", pos.x, pos.y);
#define NJIN_INFO(...)
Ghi log mức info. Tham số giống printf.
Definition njin_log.h:98
#define NJIN_WARN(...)
Ghi log mức warn. Tham số giống printf.
Definition njin_log.h:100
#define NJIN_ERROR(...)
Ghi log mức error. Tham số giống printf.
Definition njin_log.h:102
Mỗi dòng in ra dạng:
[ 1.234] WARN file.cpp:42 texture thiếu: assets/player.png
gồm thời gian (giây), mức độ, file và dòng gọi, nội dung. Log của backend cửa sổ/âm thanh cũng đi qua logger này, gắn nhãn njin như log của chính engine: njin che nó khỏi code của game (xem Kiến trúc), nên log cũng không nêu tên nó.
Mức độ
Từ chi tiết nhất đến nghiêm trọng nhất (njin::log_level):
Lọc và đổi nơi nhận
#include <njin.h>
namespace {
const char *msg, void *user) {
(void)user;
file != nullptr ? file : "?", (int)line, msg);
}
void setup(njin::context &) {
NJIN_INFO(
"dòng này bị ẩn vì thấp hơn log_warn");
NJIN_WARN(
"texture thiếu: %s",
"assets/player.png");
}
}
return {.name = "logging_demo", .setup = setup};
}
const char * log_level_name(log_level level)
Tên của một mức, ví dụ "WARN".
void log_set_level(log_level level)
Bỏ qua các dòng log có mức thấp hơn level.
log_level
Mức độ của một dòng log, từ chi tiết nhất đến nghiêm trọng nhất.
Definition njin_log.h:31
void log_set_sink(log_sink sink, void *user=nullptr)
Thay nơi nhận log.
@ log_warn
Có vấn đề nhưng chương trình vẫn chạy tiếp.
Definition njin_log.h:35
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
Mô tả một module: một nhóm system có tên.
Definition _mod.h:67
- Ghi chú
- line là 0 khi không biết đúng dòng, chỉ có tên nguồn (file là "njin" cho log của backend cửa sổ/âm thanh); file cũng là nullptr khi không biết gì.
Danh sách đầy đủ các hàm và macro nằm ở nhóm Log.