From 9762cf8a2b86bda8fb77948646ca469ed8da7fd4 Mon Sep 17 00:00:00 2001 From: zzy <2450266535@qq.com> Date: Thu, 20 Nov 2025 14:30:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(log):=20=E6=94=AF=E6=8C=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=A4=9A=E4=B8=AA=E6=97=A5=E5=BF=97=E7=BA=A7=E5=88=AB?= =?UTF-8?q?=E7=9A=84=E7=BB=84=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 `log_set_level` 函数的参数类型从 `log_level_t` 改为 `int`, 以支持传入多个日志级别的按位或组合。 同时调整测试代码中的日志级别设置方式,并修复部分逻辑引用问题,以及#未知宏跳过更多的行的bug。 --- libs/lexer/src/lexer.c | 1 - libs/lexer/tests/test_run.c | 8 +++++--- runtime/log/include/log.c | 2 +- runtime/log/include/log.h | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libs/lexer/src/lexer.c b/libs/lexer/src/lexer.c index 64e3546..4a1d43c 100644 --- a/libs/lexer/src/lexer.c +++ b/libs/lexer/src/lexer.c @@ -375,7 +375,6 @@ static void parse_line(smcc_lexer_t* lexer, lexer_tok_t* token) { lexer_next_pos(lexer); if (ch != line[i]) { LEX_WARN("Maroc does not support in lexer rather in preprocessor, it will be ignored"); - skip_newline(lexer, token); goto SKIP_LINE; } } diff --git a/libs/lexer/tests/test_run.c b/libs/lexer/tests/test_run.c index d287784..a926298 100644 --- a/libs/lexer/tests/test_run.c +++ b/libs/lexer/tests/test_run.c @@ -23,7 +23,9 @@ int g_num_arr[3]; int main(int argc, char* argv[]) { // int num = 0; if (argc == 3 && strcmp(argv[2], "-nodebug") == 0) { - log_set_level(NULL, LOG_LEVEL_ALL); + log_set_level(NULL, LOG_LEVEL_INFO + | LOG_LEVEL_WARN + | LOG_LEVEL_ERROR); } const char* file_name = __FILE__; @@ -63,7 +65,7 @@ int main(int argc, char* argv[]) { core_stream_t* stream = core_mem_stream_init(&mem_stream, buffer, fsize, false); Assert(stream != null); cstring_clear(&stream->name); - cstring_push_cstr(&stream->name, __FILE__, strlen(__FILE__)); + cstring_push_cstr(&stream->name, file_name, strlen(file_name)); lexer_init(&lexer, stream); lexer_tok_t tok; @@ -72,7 +74,7 @@ int main(int argc, char* argv[]) { if (tok.type == TOKEN_EOF) { break; } - LOG_INFO("token `%s` at %s:%u:%u", get_tok_name(tok.type), tok.loc.name, tok.loc.line, tok.loc.column); + LOG_DEBUG("token `%s` at %s:%u:%u", get_tok_name(tok.type), tok.loc.name, tok.loc.line, tok.loc.column); Assert(tok.loc.offset <= fsize); // LOG_DEBUG("%s", tok.val.str); // printf("line: %d, column: %d, type: %3d, typename: %s\n", diff --git a/runtime/log/include/log.c b/runtime/log/include/log.c index 6ea6871..b48998a 100644 --- a/runtime/log/include/log.c +++ b/runtime/log/include/log.c @@ -56,7 +56,7 @@ logger_t* log_get(const char* name) { return &logger_root; } -void log_set_level(logger_t* logger, log_level_t level) { +void log_set_level(logger_t* logger, int level) { if (logger) logger->level = level; else logger_root.level = level; } diff --git a/runtime/log/include/log.h b/runtime/log/include/log.h index da202e9..03b8dbf 100644 --- a/runtime/log/include/log.h +++ b/runtime/log/include/log.h @@ -105,7 +105,7 @@ logger_t* log_get(const char* name); * @param[in] logger 目标日志器实例 * @param[in] level 要设置的日志级别(可组合多个级别) */ -void log_set_level(logger_t* logger, log_level_t level); +void log_set_level(logger_t* logger, int level); /** * @brief 设置自定义日志处理器