njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
Log

Ghi log theo mức độ, đổi nơi nhận log. Tiếp...

Định nghĩa

#define NJIN_LOG(level, ...)
 Ghi log ở mức level, tự điền file và dòng. Các macro bên dưới gọn hơn.
#define NJIN_TRACE(...)
 Ghi log mức trace. Tham số giống printf.
#define NJIN_DEBUG(...)
 Ghi log mức debug. Tham số giống printf.
#define NJIN_INFO(...)
 Ghi log mức info. Tham số giống printf.
#define NJIN_WARN(...)
 Ghi log mức warn. Tham số giống printf.
#define NJIN_ERROR(...)
 Ghi log mức error. Tham số giống printf.
#define NJIN_FATAL(...)
 Ghi log mức fatal rồi dừng chương trình bằng std::abort().

Typedefs

using njin::log_sink
 Hàm nhận mọi dòng log vượt qua bộ lọc mức độ.

Enumerations

enum  njin::log_level {
  njin::log_trace , njin::log_debug , njin::log_info , njin::log_warn ,
  njin::log_error , njin::log_fatal , njin::log_off
}
 Mức độ của một dòng log, từ chi tiết nhất đến nghiêm trọng nhất. Tiếp...

Các hàm

void njin::log_set_level (log_level level)
 Bỏ qua các dòng log có mức thấp hơn level.
log_level njin::log_get_level ()
 Mức tối thiểu hiện tại.
bool njin::log_enabled (log_level level)
 Đúng nếu một dòng log ở mức level sẽ được ghi.
void njin::log_set_sink (log_sink sink, void *user=nullptr)
 Thay nơi nhận log.
const char * njin::log_level_name (log_level level)
 Tên của một mức, ví dụ "WARN".
void njin::log_write (log_level level, const char *file, i32 line, const char *fmt,...)
 Ghi một dòng log theo định dạng printf.

Mô tả chi tiết

Ghi log theo mức độ, đổi nơi nhận log.

Thông tin về định nghĩa

◆ NJIN_LOG

#define NJIN_LOG ( level,
... )
Giá trị:
::njin::log_write((level), __FILE__, __LINE__, __VA_ARGS__)
void log_write(log_level level, const char *file, i32 line, const char *fmt,...)
Ghi một dòng log theo định dạng printf.

Ghi log ở mức level, tự điền file và dòng. Các macro bên dưới gọn hơn.

◆ NJIN_TRACE

#define NJIN_TRACE ( ...)
Giá trị:
#define NJIN_LOG(level,...)
Ghi log ở mức level, tự điền file và dòng. Các macro bên dưới gọn hơn.
Definition njin_log.h:90
@ log_trace
Chi tiết nhất, thường chỉ dùng khi lần theo lỗi.
Definition njin_log.h:32

Ghi log mức trace. Tham số giống printf.

◆ NJIN_DEBUG

#define NJIN_DEBUG ( ...)
Giá trị:
@ log_debug
Thông tin để gỡ lỗi.
Definition njin_log.h:33

Ghi log mức debug. Tham số giống printf.

◆ NJIN_INFO

#define NJIN_INFO ( ...)
Giá trị:
@ log_info
Sự kiện bình thường.
Definition njin_log.h:34

Ghi log mức info. Tham số giống printf.

◆ NJIN_WARN

#define NJIN_WARN ( ...)
Giá trị:
@ log_warn
Có vấn đề nhưng chương trình vẫn chạy tiếp.
Definition njin_log.h:35

Ghi log mức warn. Tham số giống printf.

◆ NJIN_ERROR

#define NJIN_ERROR ( ...)
Giá trị:
@ log_error
Một thao tác đã thất bại.
Definition njin_log.h:36

Ghi log mức error. Tham số giống printf.

◆ NJIN_FATAL

#define NJIN_FATAL ( ...)
Giá trị:
do { \
NJIN_LOG(::njin::log_fatal, __VA_ARGS__); \
std::abort(); \
} while (0)
@ log_fatal
Lỗi không thể tiếp tục. NJIN_FATAL() dừng chương trình.
Definition njin_log.h:37

Ghi log mức fatal rồi dừng chương trình bằng std::abort().

Thông tin về Typedef

◆ log_sink

Giá trị khởi tạo:
void (*)(log_level level, const char *file, i32 line,
const char *msg, void *user)
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
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14

Hàm nhận mọi dòng log vượt qua bộ lọc mức độ.

line là 0 khi không biết đúng dòng, chỉ có tên nguồn (file là "njin" cho log của window/audio backend); cả file cũng là nullptr khi không biết gì. user là con trỏ đã truyền cho log_set_sink().

Thông tin về Enumeration Type

◆ log_level

Mức độ của một dòng log, từ chi tiết nhất đến nghiêm trọng nhất.

Enumerator
log_trace 

Chi tiết nhất, thường chỉ dùng khi lần theo lỗi.

log_debug 

Thông tin để gỡ lỗi.

log_info 

Sự kiện bình thường.

log_warn 

Có vấn đề nhưng chương trình vẫn chạy tiếp.

log_error 

Một thao tác đã thất bại.

log_fatal 

Lỗi không thể tiếp tục. NJIN_FATAL() dừng chương trình.

log_off 

Chỉ dùng với log_set_level() để tắt toàn bộ log.

Thông tin về hàm

◆ log_set_level()

void njin::log_set_level ( log_level level)

Bỏ qua các dòng log có mức thấp hơn level.

Mặc định là log_debug ở bản debug và log_info khi có NDEBUG.

Các tham số
levelMức tối thiểu được giữ lại.

◆ log_get_level()

log_level njin::log_get_level ( )

Mức tối thiểu hiện tại.

Giá trị trả về
Mức tối thiểu hiện tại.

◆ log_enabled()

bool njin::log_enabled ( log_level level)

Đúng nếu một dòng log ở mức level sẽ được ghi.

Các tham số
levelMức cần kiểm tra.
Giá trị trả về
true nếu dòng log ở mức đó sẽ được ghi.

◆ log_set_sink()

void njin::log_set_sink ( log_sink sink,
void * user = nullptr )

Thay nơi nhận log.

Truyền nullptr để trở về mặc định (stderr).

Các tham số
sinkHàm nhận log, hoặc nullptr.
userCon trỏ tùy ý, được truyền lại cho sink.

◆ log_level_name()

const char * njin::log_level_name ( log_level level)

Tên của một mức, ví dụ "WARN".

Các tham số
levelMức cần lấy tên.
Giá trị trả về
Chuỗi có sẵn, không cần giải phóng.

◆ log_write()

void njin::log_write ( log_level level,
const char * file,
i32 line,
const char * fmt,
... )

Ghi một dòng log theo định dạng printf.

Nên dùng các macro NJIN_* bên dưới vì chúng tự điền file và line.

Các tham số
levelMức của dòng log.
fileTên file nguồn, hoặc nullptr.
lineSố dòng, hoặc 0.
fmtChuỗi định dạng kiểu printf.